Inverse:可选,意为“反转”,用于表示双向关联中的被动一端。在关联关系中,inverse=“false”的一方为主控方,负责维护关联关系,它的默认值是“false”。
例:member与order是一对多关系。
Member.hbm.xml的配置文件中
<set name=“orders” order-by=“order_id” cascade=“all” lazy=“true”inverse=“true”>
<key column=“member_id”/>
<one-to-many class=“Order”/>
</set>
1.Inverse=“true”表示Member不再作为关系的主控方,而由Order做主控方负责维护关系。这样在Order对象持久化时,它会主动去获取相关的Memember的id,作为自己的member_id.(在一对多关系中一般将多的一方设置为false,即关系的主控方,这将有助于改善性能)。
2.Cascade:如上对Member的cascade设置为all,表明对member对象的任何操作都会对与member对象相关联的order进行同样的操作。
3.新增一个Order对象时
l 如果设one端(member)为主控方(inverse=false),则代码如下:
Order order=new Order();
member.getOrders().add(order);//会加载与此member相关联的所有Order集合,会占用大量内存,影响性能。
session.save(member);
l 如果设置many端(order)为主控方
Order order=new Order();
order.setMember(member);
session.save(order);
无需加载与member相关联的多有Order对象。
分享到:
相关推荐
前端经典——lazyload懒加载
lazy binomial heaps的oython实现,优先队列。采用双向循环链表实现,api:merge,insert,find_min,extractMin,coalesce_step,updateMin。
hibernate 中的lazy属性的使用
Dwr+Hibernate的Lazy问题 解决了Hibernate延迟加载失效问题
Hibernate 的 lazyload 在FLEX中的解决方法例子 用的是gilead 因为LIB包太大上传很慢所以被我删掉了。
我希望正在阅读这本小册的各位可以在心里琢磨一下这个问题——无须你调动太多计算机的专业知识,只需要你用最快的速度在脑海中架构起这个抽象的过程——我们接下来所有的工作,就是围绕这个过程来做文章。...
Hibernate中Cascade和inverse的区别,讲解的很详细
Hibernate fetch lazy cascade inverse 关键字
博文链接:https://llying.iteye.com/blog/221699
Hibernate延时加载与lazy机制.docHibernate延时加载与lazy机制.doc
NULL 博文链接:https://xuwoool.iteye.com/blog/1306207
NULL 博文链接:https://quicker.iteye.com/blog/662613
Hibernate环境搭建 Hibernate主要接口 Hibernate主要映射 Hibernate的lazy、fetch、cascade等策略 Hibernate性能优化
hibernate映射lazy策略hibernate查询语言hql
博文链接:https://llying.iteye.com/blog/221700
NULL 博文链接:https://afuer.iteye.com/blog/1508008
Hibernate 的延迟加载(lazy load)是一个被广泛使用的技术。这种延迟加载保证了应用只有在需要时才去数据库中抓取相应的记录。通过延迟加载技术可以避免过多、过早地加载数据表里的数据,从而降低应用的内存开销。...
16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”) 16.3.6 迫切左外连接检索(fetch属性为“join”) 16.4 多对一和一对一关联的检索策略 16.4.1 迫切左外连接检索(fetch...
001 Hibernate 简介(开源 O/R 映射框架) 002 第一个 Hibernate 示例 003 hibernate 主要接口介绍 004 持久对象的生命周期介绍 005 query 接口初步 006 开源 O/R 映射框架内容回顾 007 Hibernate 基本映射标签和属性...
Lazy