`
ericslegend
  • 浏览: 86520 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate——Lazy, Inverse, Select

    博客分类:
  • Java
阅读更多

Inverse:可选,意为“反转”,用于表示双向关联中的被动一端。在关联关系中,inverse=false”的一方为主控方,负责维护关联关系,它的默认值是“false”。

例:memberorder是一对多关系。

Member.hbm.xml的配置文件中

<set name=orders order-by=order_idcascade=alllazy=trueinverse=true>

    <key column=member_id/>

    <one-to-many class=Order/>

</set>

1.Inverse=true”表示Member不再作为关系的主控方,而由Order做主控方负责维护关系。这样在Order对象持久化时,它会主动去获取相关的Mememberid,作为自己的member_id.(在一对多关系中一般将多的一方设置为false,即关系的主控方,这将有助于改善性能)。

2.Cascade:如上对Membercascade设置为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对象。

1
0
分享到:
评论

相关推荐

    Hibernate笔记

    6. **Fetch Types**: 在Hibernate中,提供了多种方式来获取关联对象:`EAGER`(急切加载)和`LAZY`(惰性加载)。 #### 三、获取数据方法 - **load()**: 用于加载指定主键对应的实体对象。如果对象不在缓存中,则...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”)  16.3.6 迫切左外连接检索(fetch属性为“join”)  16.4 多对一和一对一关联的检索策略  16.4.1 迫切左外连接检索(fetch...

    Hibernate延迟加载介绍.doc

    如果目标对象(即真实的User对象)尚未加载,Hibernate会执行SQL查询(如`select * from user where id='1'`),获取数据并构建目标对象,然后将其赋值给代理对象的`CGLIB$CALLBACK_0.target`属性。 二、集合类型的...

    常用 Hibernate 映射配置说明.doc

    - **select-before-update**: 在更新前是否先执行SELECT语句,确保并发安全。 - **polymorphism**: 控制继承模式,可以是`implicit`(隐式继承)或`explicit`(显式继承)。 - **where**: 允许添加额外的WHERE条件...

    Hibernate延迟加载

    **延迟加载**(Lazy Loading)是Hibernate框架中的一个重要特性,主要用于优化数据库操作,减少不必要的数据加载,从而提升应用程序的性能。在传统的Eager Loading(急切加载)模式下,一旦加载了一个对象,与之相关的...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”)  16.3.6 迫切左外连接检索(fetch属性为“join”)  16.4 多对一和一对一关联的检索策略  16.4.1 迫切左外连接检索(fetch...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”)  16.3.6 迫切左外连接检索(fetch属性为“join”)  16.4 多对一和一对一关联的检索策略  16.4.1 迫切左外连接检索(fetch...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”)  16.3.6 迫切左外连接检索(fetch属性为“join”)  16.4 多对一和一对一关联的检索策略  16.4.1 迫切左外连接检索(fetch...

    hibernate学习笔记

    ### Hibernate学习笔记:对象/关系数据库映射(二)——集合映射 #### 1. 集合映射概述 在对象/关系映射(ORM)领域中,Hibernate 是一个非常强大的工具,它能够帮助开发者高效地进行 Java 对象与数据库记录之间的...

    Hibernate Reference Documentation3.1

    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 ...

    Hibernate学习笔记

    - **实现方式**:通过`select ... for update`或`lock mode=LockMode.PESSIMISTIC_WRITE`实现。 #### 乐观锁定 - **定义**:一种锁定机制,假设冲突不会发生,仅在提交时检查是否有冲突。 - **实现方式**:通常通过...

    bibernate知识点

    - **Inverse**:反向操作,如`inverse="true"`表示由另一方维护关系。 - **Fetch**:加载策略,如`fetch="join"`表示使用联合查询加载关联对象;`fetch="select"`表示延迟加载。 ##### 2. Lazy加载 - **Lazy="true...

    hibernate-one-to-many

    &lt;set name="employees" table="EMPLOYEE" inverse="true" lazy="true" fetch="select"&gt; ``` **Employee.hbm.xml** ```xml ``` 如果使用注解,上述关系已经在实体类中定义。 ### 3. 操作一对多关系 在...

    JavaEE技术面试常见问题.doc

    - **inverse**:关联关系的管理权。 - **cascade**:级联操作。 5. **Hibernate中的延迟加载** - **概念**:在真正需要时才加载关联对象。 - **用途**:提高性能,减少内存占用。 6. **Hibernate缓存机制** ...

Global site tag (gtag.js) - Google Analytics