`
fengfan2008
  • 浏览: 96916 次
  • 性别: Icon_minigender_1
  • 来自: 南京市
社区版块
存档分类
最新评论

延迟加载fetch, lazy与更新cascade, inverse

SQL 
阅读更多

fetch 和 lazy 主要是用来级联查询的,而 cascade 和 inverse 主要是用来级联插入和修改的



fetch参数指定了关联对象抓取的方式是select查询还是join查询,select方式时先查询返回要查询的主体对象(列表),再根据关联外键 id,每一个对象发一个select查询,获取关联的对象,形成n+1次查 询;而join方式,主体对象和关联对象用一句外键关联的sql同时查询出来,不会形成多次查询。
如果你的关联对象是延迟加载的,它当然不会去查询关联对象。另外,在hql查询中配置文件中设置的join方式是不起作用的(而在所有其他查询方式如get、criteria或再关联获取等等都是有效的),会使用 select方式,除非你在hql中指定join fetch某个关联对象。fetch策略用于定义 get/load一个对象时,如何获取非lazy的对象/集合。 这些参数在Query中无效。

待补充
分享到:
评论

相关推荐

    hibernate

    根据提供的文件信息,我们可以深入探讨Hibernate框架中的几个关键概念,特别是`fetch`, `lazy`, `cascade`, 和 `inverse`关键字的使用与理解。这四个概念在处理对象关系映射(ORM)时非常重要,尤其是在Java环境下...

    Hibernate笔记

    5. **Lazy Loading**: 惰性加载机制,用于延迟加载关联对象。只有当真正需要访问关联对象时,Hibernate才会发起数据库查询来获取数据。 6. **Fetch Types**: 在Hibernate中,提供了多种方式来获取关联对象:`EAGER`...

    Hibernate关联关系疑问

    5. **懒加载与急加载(Lazy Loading vs Eager Loading)**:Hibernate提供了两种加载关联对象的方式。懒加载默认不加载关联对象,只有在真正需要时才查询数据库;而急加载则会在加载主体对象时一起加载关联对象。...

    hibernate 多对多操作

    在多对多映射中,这两个标签用于定义关系的一端,它们包含属性如inverse(反向),cascade(级联操作),fetch(加载策略)等。 4. **中间表与关联表**: 在多对多关系中,通常需要一个中间表来存储两个实体的主键,...

    y2_java单词

    3. **fetch**:在Hibernate中,`fetch`策略决定如何获取关联的数据,例如选择立即加载(eager fetch)还是延迟加载(lazy fetch)。 4. **cascade**:级联操作指一个对象的改变会影响到与其相关联的对象,例如删除...

    bibernate知识点

    `fetch="select"`表示延迟加载。 ##### 2. Lazy加载 - **Lazy="true"**:默认情况下,关联对象在需要时才加载。 - **Lazy="false"**:Eager加载,关联对象与主对象同时加载。 #### 五、缓存机制 ##### 1. 二级...

    Hibernate一对多映射配置详解

    3. `fetch`属性:用于指定关联数据的加载策略,如`EAGER`(立即加载)或`LAZY`(延迟加载)。 4. 外键约束:在数据库中,可以设置外键约束以确保数据一致性,但不是必须的,Hibernate可以通过程序逻辑实现数据一致性...

    Hibernate使用技巧汇总

    - 如果启用了延迟加载,但在某个时刻需要加载所有相关对象时,可以通过`fetchSize`和`batchSize`控制批量加载的数量。 #### 十三、Spring事务管理 - **Spring事务管理**: - 推荐使用Spring的容器管理事务,以...

    hibernate一对多关联映射(双向关联)

    1. 使用`@LazyCollection(LazyCollectionOption.EXTRA)`或在`<set>`标签中添加`lazy="true"`来实现延迟加载,避免加载大量无关数据。 2. 在业务逻辑中合理控制关联对象的修改,确保在保存或更新关联对象时,同时更新...

    Hibernate_h_源码

    4. **fetch策略**:通过`fetch`属性可以指定加载关联的方式,如`FetchType.LAZY`(懒加载)和`FetchType.EAGER`(立即加载)。默认情况下,一对多关系是懒加载的,以避免不必要的性能开销。 5. **级联操作**:通过`...

    我的学习笔记

    #### Inverse与cascade属性 `inverse`属性用于控制关联关系的维护方,即哪一方负责更新关联的外键。`cascade`属性则用于控制一系列级联操作,如在父实体上执行操作时自动在子实体上执行相同的操作。 #### 继承映射 ...

    hibernate一对一主键关联(注解版)

    如果想要延迟加载(LAZY),可以设置`fetch = FetchType.LAZY`。 8. **示例代码**: 下面是一个简单的代码示例,展示了如何在实际应用中创建和操作这些对象: ```java Session session = HibernateUtil....

    Hibernate双向一对多

    2. **fetch策略**:设置`fetchType`,可以选择懒加载(LAZY)或立即加载(EAGER)。 3. **cascade类型**:通过`cascade`属性控制级联操作,如删除或保存时是否同步操作相关联的对象。 4. **inverse属性**:在`@...

    Hibernate 相关映射关系

    通过`@OneToMany`注解来配置,可以设置`fetch`策略(如LAZY或EAGER),以及`cascade`属性来决定操作的级联性。例如,一个部门可以有多个员工,Department实体中有一个Employee列表。 3. **多对一映射(Many-to-One...

    Hibernate学习之 : 一对多关联映射

    <set name="orders" table="orders" inverse="true" lazy="true" cascade="all"> ``` 而在`Order`的映射文件中: ```xml ``` **示例应用** 为了更好地理解,我们可以创建一个简单的示例。首先,创建`...

    hibernate的多种映射关系

    7. **懒加载与立即加载 (Lazy Loading vs Eager Loading)** Hibernate 提供了两种加载策略:懒加载(默认)只在需要时加载关联数据,而立即加载则在加载主对象时同时加载关联对象。`fetch` 属性在 `@ManyToOne` 和 ...

    Hibernate教程16_集合映射

    6. **fetch**:这个属性用于控制集合的加载策略,如"EAGER"(立即加载)和"LAZY"(延迟加载)。默认情况下,Hibernate采用懒加载,只在真正需要集合时才去数据库获取数据,以提高性能。 在`s2sh_relation13_...

    java笔试题.pdf

    - **Hibernate的inverse、cascade、fetch、lazy**:这些是Hibernate的持久化策略,inverse用于管理关联关系的维护,cascade控制操作的级联,fetch决定加载关联数据的方式,lazy是懒加载策略。 这些知识点都是Java...

    hibernate 一对多关联

    - **懒加载与瞬时加载**:可以通过`lazy="true"`(默认)或`fetch="LAZY"`(注解中为`@OneToMany(fetch = FetchType.LAZY)`)实现懒加载,以提高性能,避免一次性加载大量数据。 - **级联操作**:通过`cascade`属性...

Global site tag (gtag.js) - Google Analytics