EclipseLink可以在实体管理器不再可用的情况下加载实体中的延迟关系。而Hibernate则无法做到这一点,至少在该文章发布时是如此。
其他提供者呢?特别是OpenJPA和DataNucleus?
除了更复杂的实现外,这种方法有哪些缺点?
EclipseLink可以在实体管理器不再可用的情况下加载实体中的延迟关系。而Hibernate则无法做到这一点,至少在该文章发布时是如此。
其他提供者呢?特别是OpenJPA和DataNucleus?
除了更复杂的实现外,这种方法有哪些缺点?
OpenSessionInViewFilter
来进行延迟加载。这个SO回答 和 这篇论坛帖子 则指出,DataNucleus 需要一个 OpenPersistenceManagerInViewFilter
来进行延迟加载。hibernate.enable_lazy_load_no_trans
在事务外加载惰性数据的支持。DataNucleus JPA 可以很好地在事务之外执行字段的延迟加载。显然,你需要说明你是否使用 TRANSACTION 或 EXTENDED 持久上下文,因为在前一种情况下,对象在事务提交时会变成 DETACHED(分离状态),而此时不能进行延迟加载;而在后一种情况下,对象保持为 MANAGED(托管状态),在此情况下,可以进行延迟加载。