将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(二) - 编程入门网
禁用延迟(或启 用 eager)初始化,请按照以下方式进行映射:
在父对象中,将集合(设置、包或列表)与 lazy=false 属性一起使用。 在子对象中,将类与 lazy=false 属性一起使用以启用获取。 映射 20. 延迟初始化(Hibernate XML 映射)
OpenJPA 约定 在 OpenJPA 中,一对多和多对一关系的延迟初始化也是缺省值。要禁用延迟初始化(和启用 eager 初始化),请按照以下方式进行映射: 在父实体的集合中使用 fetch=FetchType.EAGER 属性。 将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(二)(7)时间:2011-09-18 Donald Vines映射 21. 延迟初始化(OpenJPA XML 映射)
还值得一提的是,Hibernate 和 OpenJPA 在从分离对象访问延迟加载的集合上是不同的。在 Hibernate 中,如果程序员尝试访问分离对象上延迟加载的集合,则会引发异常;而 OpenJPA 将返回空 值,而不是异常。 此差异的原因是 JPA 规范没有指定如何处理在分离对象上访问延迟加载的集合。每个 JPA 供应商可 以决定如何处理此条件。它们会引发异常,或者将其保留为未初始化状态,甚至返回具有零个元素的集合 。 因此,如果遗留 Hibernate 应用程序正在使用异常检测对分离对象的延迟加载集合的访问,您可以使 用 OpenJPA 通过测试空集合执行相同的操作。不过,需要记住的是:JPA 规范没有说明是引发异常还是 返回空值,因此依赖于此行为不可移植,并且随时会更改,甚至可能在以后版本中中断您的应用程序。 此外,还要务必注意您是获取异常(在 Hibernate 中获取),还是不获 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |