java – 如何阻止Hibernate急切地获取多对一的关联对象
我在一个域对象中有一个属性,它被声明在一个多对一的元素中.该属性的基本语法如下所示:
<many-to-one name="propertyName" class="propertyClass" fetch="select" not-found="ignore" lazy="proxy" /> 现在,这个想法是让Hibernate不急于获取这个属性.它可能为null,因此未设置的ignore被设置. 但是,Hibernate在加载包含此关联的类时,会在加载父类时将其自身加载到实际的类(甚至是代理)实例.由于某些属性的大小超过1MB,因此占用大量的堆空间. 然而,如果未找到异常(或默认为异常),则具有此属性的父类将加载代理! 如何停止hibernate不加载代理,同时仍然允许此属性为空? 我发现lazy = no-proxy,但是文档谈到某种字节码修改,并没有详细介绍.有人可以帮我吗? 如果它是重要的,它是Java版本的Hibernate,它至少是版本3(我可以查找实际的版本,如果它有帮助,但现在是Hibernate 3). 我以前没有指定,但是Java版本是1.4.因此,Java注释不受支持. 解决方法
如果关联的另一端可以为空,我相信hibernate必须查询关联结束,以确定它是否应该使用代理(不需要代理,如果另一端为空).我现在找不到这个参考,但我记得在某处读书.
为了提供延迟加载的字段,文档引用了在buildtime:Using lazy property fetching的字段的字节码增强.这是一个摘录:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |