通过EJB公开功能的模块。如何处理模块之间的Hibernate延迟加载?

时间:2012-02-19 04:15:21

标签: hibernate architecture ejb

让我们说应用程序被分解为模块,每个模块通过EJB公开功能。如果模块A调用模块B中的EJB方法,该方法返回通过Hibernate检索的对象,则模块A将无法调用该对象的延迟加载方法,因为会话不再存在。如何处理这种情况?

2 个答案:

答案 0 :(得分:1)

除了在从系统B返回对象之前完全水合对象之外别无选择.Hibernate不会跨越JVM而你也不想要它。如果对象太大,那么您可能需要引入两个(或多个)调用来返回摘要和详细信息。

答案 1 :(得分:0)

我想出了最后的决定。还没有尝试过,但我认为它会起作用。问题是

如果模块A调用模块B中的EJB方法并返回通过Hibernate检索的对象,则模块A将无法调用该对象的延迟加载方法,因为会话不再存在。

因此,为了克服这个问题,模块B将仅返回对象的主键,而模块A将通过Hibernate检索对象。这样,模块A将能够调用对象的延迟加载方法。