2012-02-19 26 views
1

假設一個應用程序被分解爲模塊,每個模塊通過EJB展示功能。如果模塊A調用模塊B中的EJB方法,該方法返回通過Hibernate檢索到的對象,則模塊A將無法調用該對象的延遲加載方法,因爲會話不再存在。如何處理這種情況?通過EJB公開功能的模塊。如何處理模塊之間的Hibernate延遲加載?

+0

這是鬆散耦合系統中典型的「問題」。抽象只是伴隨着成本... – home 2012-02-23 07:35:09

回答

0

我想出了這個最終決定。還沒有嘗試過,但我認爲它會工作。問題是

如果模塊A調用模塊B中的EJB方法,該方法返回通過Hibernate檢索到的對象,則模塊A將無法調用該對象的延遲加載方法,因爲該會話不再那裏。

所以爲了克服這個問題,模塊B將只返回對象的主鍵,模塊A將通過Hibernate檢索對象。通過這種方式,模塊A將能夠調用對象的延遲加載方法。

1

除了在從系統B返回對象之前完全水合對象,沒有其他選擇。休眠不會跨越JVM,也不需要它。如果對象太大,則可能需要引入兩個(或多個)調用來返回摘要和詳細信息。