让我们说应用程序被分解为模块,每个模块通过EJB公开功能。如果模块A调用模块B中的EJB方法,该方法返回通过Hibernate检索的对象,则模块A将无法调用该对象的延迟加载方法,因为会话不再存在。如何处理这种情况?
答案 0 :(得分:1)
除了在从系统B返回对象之前完全水合对象之外别无选择.Hibernate不会跨越JVM而你也不想要它。如果对象太大,那么您可能需要引入两个(或多个)调用来返回摘要和详细信息。
答案 1 :(得分:0)
我想出了最后的决定。还没有尝试过,但我认为它会起作用。问题是
如果模块A调用模块B中的EJB方法并返回通过Hibernate检索的对象,则模块A将无法调用该对象的延迟加载方法,因为会话不再存在。
因此,为了克服这个问题,模块B将仅返回对象的主键,而模块A将通过Hibernate检索对象。这样,模块A将能够调用对象的延迟加载方法。