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对象。
分享到:
相关推荐
6. **Fetch Types**: 在Hibernate中,提供了多种方式来获取关联对象:`EAGER`(急切加载)和`LAZY`(惰性加载)。 #### 三、获取数据方法 - **load()**: 用于加载指定主键对应的实体对象。如果对象不在缓存中,则...
16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”) 16.3.6 迫切左外连接检索(fetch属性为“join”) 16.4 多对一和一对一关联的检索策略 16.4.1 迫切左外连接检索(fetch...
如果目标对象(即真实的User对象)尚未加载,Hibernate会执行SQL查询(如`select * from user where id='1'`),获取数据并构建目标对象,然后将其赋值给代理对象的`CGLIB$CALLBACK_0.target`属性。 二、集合类型的...
- **select-before-update**: 在更新前是否先执行SELECT语句,确保并发安全。 - **polymorphism**: 控制继承模式,可以是`implicit`(隐式继承)或`explicit`(显式继承)。 - **where**: 允许添加额外的WHERE条件...
**延迟加载**(Lazy Loading)是Hibernate框架中的一个重要特性,主要用于优化数据库操作,减少不必要的数据加载,从而提升应用程序的性能。在传统的Eager Loading(急切加载)模式下,一旦加载了一个对象,与之相关的...
16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”) 16.3.6 迫切左外连接检索(fetch属性为“join”) 16.4 多对一和一对一关联的检索策略 16.4.1 迫切左外连接检索(fetch...
16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”) 16.3.6 迫切左外连接检索(fetch属性为“join”) 16.4 多对一和一对一关联的检索策略 16.4.1 迫切左外连接检索(fetch...
16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”) 16.3.6 迫切左外连接检索(fetch属性为“join”) 16.4 多对一和一对一关联的检索策略 16.4.1 迫切左外连接检索(fetch...
### Hibernate学习笔记:对象/关系数据库映射(二)——集合映射 #### 1. 集合映射概述 在对象/关系映射(ORM)领域中,Hibernate 是一个非常强大的工具,它能够帮助开发者高效地进行 Java 对象与数据库记录之间的...
<set name="labproductflowinfos" inverse="true" cascade="all-delete-orphan" lazy="false" sort="com.zsc.hibernate.FlowInfoComparator"> ``` 3. **多对多关系的排序**: 多对多关系的排序相对复杂,通常...
14.5. The select clause 14.6. Aggregate functions 14.7. Polymorphic queries 14.8. The where clause 14.9. Expressions 14.10. The order by clause 14.11. The group by clause 14.12. Subqueries 14.13. HQL ...
- **实现方式**:通过`select ... for update`或`lock mode=LockMode.PESSIMISTIC_WRITE`实现。 #### 乐观锁定 - **定义**:一种锁定机制,假设冲突不会发生,仅在提交时检查是否有冲突。 - **实现方式**:通常通过...
- **Inverse**:反向操作,如`inverse="true"`表示由另一方维护关系。 - **Fetch**:加载策略,如`fetch="join"`表示使用联合查询加载关联对象;`fetch="select"`表示延迟加载。 ##### 2. Lazy加载 - **Lazy="true...
<set name="employees" table="EMPLOYEE" inverse="true" lazy="true" fetch="select"> ``` **Employee.hbm.xml** ```xml ``` 如果使用注解,上述关系已经在实体类中定义。 ### 3. 操作一对多关系 在...
- **inverse**:关联关系的管理权。 - **cascade**:级联操作。 5. **Hibernate中的延迟加载** - **概念**:在真正需要时才加载关联对象。 - **用途**:提高性能,减少内存占用。 6. **Hibernate缓存机制** ...