我幾乎有確切的問題,並使用休眠。我們在項目後期遇到了很多問題,因爲即使使用懶惰提取類型,視圖基本上也會將整個圖形強制到內存中。這些工具在早期階段很好,因爲我們可以快速獲得一個DB層,這給了我們一些東西(huzzah敏捷)。只有當我們要提高性能時,我們才意識到我們需要編寫更智能的持久層。
是否可以對數據進行一些預處理?如果問題類似,則嘗試將數據轉換爲比原始域更接近視圖的中間表單並將其存儲在數據庫中也有很大的價值。您始終可以使用懶惰獲取類型鏈接回原始來源。
基本上,我們使用了4層系統:域DB,視圖模型-DB雜交體(預處理層),視圖模型,視圖
此預處理步驟(特別是與實時UI)的優點,是您可以將數據分頁到ViewModel中並很好地呈現它。在實時應用程序中的很多性能都是微不足道的,只需保持響應並在等待時向他們展示一些不錯的內容。在我們的例子中,我們可以顯示正在分頁的數據的3d框區域,鏈接到加載數據的數據也可以顯示一個可視指示器。 ViewModel-DB混合體也可以做很好的事情,比如適合我們域數據的LRU隊列。儘管最大的優勢是消除了直接鏈接。節點有類似於鏈接數據的URL。渲染時,我們可以渲染鏈接,或者渲染出現有鏈接,我們現在只是分頁。
數據庫級別的持久性是JPA(Hibernate)的啓動,但最終它爲我們的繼承結構生成的表格非常糟糕,難以維護。最後,我們想要比JPA允許的(或者至少容易允許的)更多地控制表。這是一個艱難的決定,因爲JPA確實使很多DB層變得容易。由於JPA保持了很好的東西和POJO,所以它不需要使用我們的數據類型。所以這很好。
我希望有一些東西你可以拉出來這個蜿蜒的答案,祝你好運:)
我懷疑它太籠統了,不能給出一個好的答案 - 你能列出樹結構的一些用例嗎?即如何使用它,存儲什麼(如果可能的話)。對於性能,您可能想要說明典型訪問時間需要以毫秒或其他單位的速度快多少,因爲只是說性能和「實時」非常模糊。 – Chii 2009-10-07 12:06:44
當「一切都連接在一起」,它不是一棵樹,它是一張圖:http://en.wikipedia.org/wiki/Graph_%28data_structure%29也許你應該改寫標題? – nawroth 2009-10-07 13:36:23
當前高性能圖形數據庫的好集合:http://java.dzone.com/news/most-trendy-graph-databases – AMilassin 2010-05-10 07:00:46