2010-02-12 82 views
2

我正在開發一個客戶端 - 服務器應用程序,Hibernate作爲持久層和Jersey REST進行網絡通信。Hibernate延遲加載+ Jersey REST =急切加載?

考慮到與角色的用戶:

    時,我想顯示在客戶端的所有用戶,我不希望由Hibernate加載的角色,我不希望他們送過來
  1. 網絡
  2. 當我要修改用戶的角色,我希望他們能夠加載和我使用的是預加載模式(http://bwinterberg.blogspot.com/2009/09/hibernate-preload-pattern.html),以確定哪些屬性應該由Hibernate加載轉移

。這工作正常。

在情況1中,沒有任何角色由Hibernate加載,就像預期的那樣。但是,只要Jersey創建要發送給客戶端的XML,它就會讀取用戶的角色,這又會讓Hibernate加載角色(以及所有其他屬性)。最後,Hibernate總是加載屬於用戶的完整數據集樹。

我想在關閉會話之前關閉會話,然後再將用戶傳遞給Jersey,所以Hibernate無法加載角色,但這似乎沒有任何效果。

任何想法?

回答

3
  • 讓你的實體的淺表副本和一個空的收集組給它,給它進行序列化

  • 使代理收集的自定義代理之前,只有在某些情況下,委託加載(第一個用例),並返回其他空集合

+0

謝謝!我會在星期一嘗試。 – Olvagor 2010-02-12 16:20:43

+0

好吧,我試着做一個淺拷貝並設置一個空集合。這工作得很好。但是它也沒有複製,因爲幸運的是這個改變沒有被提交給數據庫。 現在我將我的空集合直接設置爲數據庫中的實體。 感謝您的提示! – Olvagor 2010-02-15 12:08:11