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

fetch lazy (一)

阅读更多


经过测试发现Hibernate annotation中@ManyToOne,@OneToMany,@OneToOne中lazy的默认值是不同的



@OneToMany 默认Lazy为true


@ManyToOne,@OneToOne 默认lazy为false



在设置@ManyToOne的时候我们一般都会设置Lazy=true



一般不会在@ManyToOne,@OneToOne考虑这个问题



但实际hibernate进行load是时候是把一端也load出来的



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中无效。




分享到:
评论

相关推荐

    SSH笔记-检索策略(lazy、fetch、batch-size)

    本笔记将聚焦于Hibernate中的类级别检索策略以及`lazy`、`fetch`和`batch-size`这三个属性的使用,帮助开发者更高效地管理数据库查询。 1. **懒加载(Lazy Loading)** `lazy`属性是Hibernate的懒加载机制,用于...

    hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法

    Hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法是 Hibernate 框架中的一种常见问题。当我们在 Hibernate 中使用懒加载特性时,可能会遇到 LazyInitializationException 异常,这是因为 Hibernate 的 ...

    Hibernate Fetch 的作用

    在Hibernate中,Fetch策略是解决数据加载时效率与灵活性的关键之一。 ### Hibernate Fetch策略详解 #### 1. Fetch策略概述 Fetch策略决定了如何加载实体及其关联的数据。在Hibernate中,主要有两种Fetch策略:...

    hibernate在集合上的lazy策略

    在Java的持久化框架Hibernate中,懒加载(Lazy Loading)是一种优化策略,它允许我们推迟对关联对象的加载,直到真正需要它们的时候。标题“hibernate在集合上的lazy策略”指的是Hibernate如何处理与实体相关的集合...

    hibernate 中的lazy属性祥解.txt

    在Hibernate中,当设置关联属性的`fetch`或`lazy`属性为`true`时,表示该关联属性采用懒加载方式。这意味着,在获取主对象时,Hibernate不会立即加载与其关联的子对象。例如,在用户(User)与帖子(Post)之间的多...

    Hibernate lazy延迟加载

    在Java的持久化框架Hibernate中,懒加载(Lazy Loading)是一种重要的优化策略,它的核心思想是“延迟加载”或“按需加载”。默认情况下,当一个实体被加载时,并不会立即加载其关联的对象或集合,而是在真正需要...

    PHP PDOStatement::fetch讲解

    // 使用 PDO::FETCH_LAZY 获取一个匿名对象,列名作为对象属性 print("PDO::FETCH_LAZY: "); print("Return next row as an anonymous object with column names as properties\n"); $result = $sth->fetch(PDO::...

    当设置lazy=true时,怎样使用extjs和Hibernate

    当`@ManyToOne`, `@OneToOne`, `@OneToMany`, 或 `@ManyToMany`注解中的`fetch`属性设置为`LAZY`时,关联的实体将不会在主实体加载时立即加载,而是在第一次访问这些关联属性时才加载。 - 这种策略避免了在不需要...

    Hibernate教程15_关联关系中的CRUD Cascade_Fetch

    `@ManyToOne(fetch = FetchType.EAGER)`表示多对一关系的加载策略为立即加载,`@OneToMany(fetch = FetchType.LAZY)`表示一对多关系的懒加载。 5. 源码分析: 压缩包中的`s2sh_relation12_one2many_many2one_bi_...

    Hibernate lazy加载FOR Connection

    此外,理解Hibernate的“fetch plan”也很重要,这是控制加载关联对象策略的一种方式。FetchType.LAZY和FetchType.EAGER是两种主要的加载策略,前者对应懒加载,后者则是在加载主对象时同时加载关联对象。 总之,...

    hibernate的lazy策略forClass

    在Java的持久化框架Hibernate中,懒加载(Lazy Loading)是一种重要的对象关系映射策略,用于提高应用程序的性能。懒加载的基本思想是延迟加载,即当真正需要数据时,才去数据库加载。在这个场景中,我们关注的是...

    hibernate在单端关联上的lazy策略

    1. **配置懒加载**:在Hibernate的映射文件或注解中,可以通过`fetch="lazy"`(XML映射)或`@OneToMany(mappedBy = "property", fetch = FetchType.LAZY)`(注解映射)来指定关联的懒加载。 2. **代理机制**:...

    lazyFetchCache

    文件名称列表中的 "hb_09_lazy"、"hb_10_fetch" 和 "hb_11_cache" 可能代表一系列教程或示例,分别对应于懒加载、一次性加载和缓存的实践。通过学习这些资源,你可以更好地理解和掌握如何在实际项目中运用这些策略来...

    Hibernate一对一关联映射(注解)

    @OneToOne(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY) private IdCard idCard; } @Entity public class IdCard { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) ...

    Hibernate一对一,一对多,多对多实例

    在实际开发中,为了提高性能,我们还可以设置`fetch`属性(如`LAZY`或`EAGER`)来控制关联加载策略,以及使用`CascadeType`来定义级联操作。同时,注意处理可能出现的空指针异常和数据一致性问题,确保程序的健壮性...

    Hibernate双向一对一关联映射(注解版)

    1. **懒加载与级联操作**:可以使用`fetch = FetchType.LAZY`实现懒加载,减少不必要的数据库查询。同时,`cascade`属性可以设置级联操作,如`CascadeType.ALL`会将删除、保存等操作级联到关联对象。 2. **避免循环...

    hibernate一对一关联关系

    - Hibernate提供两种加载关联对象的策略:懒加载(Lazy)和急加载(Eager)。默认情况下,一对一关联是懒加载的,意味着关联的对象不会在初始加载时被加载,而是等到真正需要时才从数据库中获取。如果希望关联对象...

    hibernate 框架的基础四

    <many-to-one name="customer" class="Customer" fetch="lazy" column="customer_id" /> ``` 综上所述,通过深入了解HQL的多表检索技术、事务管理及隔离级别、查询优化方法以及合理的抓取策略配置,可以帮助...

    Hibernate双向一对多

    @OneToMany(mappedBy = "class", cascade = CascadeType.ALL, fetch = FetchType.LAZY) private List<Student> students; // getters & setters } @Entity public class Student { @Id private Long id; @...

Global site tag (gtag.js) - Google Analytics