`
绿茶_白开水
  • 浏览: 19166 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FetchType与FetchMode的区别

    博客分类:
  • JAVA
阅读更多

使用例:

@OneToMany(mappedBy="item",cascade=CascadeType.ALL,fetch=FetchType.EAGER) 

@Fetch(value=FetchMode.SUBSELECT) 

两者比较:

两者都是设定关联对象的加载策略。前者是JPA标准的通用加载策略注解属性,

后者是Hibernate自有加载策略注解属性。

FetchType可选值意义与区别如下:

FetchType.LAZY: 懒加载,在访问关联对象的时候加载(即从数据库读入内存)

FetchType.EAGER:立刻加载,在查询主对象的时候同时加载关联对象。

FetchMode可选值意义与区别如下:

@Fetch(FetchMode.JOIN): 始终立刻加载,使用外连(outer join)查询的同时加载关联对象,忽略FetchType.LAZY设定。

@Fetch(FetchMode.SELECT) :默认懒加载(除非设定关联属性lazy=false),当访问每一个关联对象时加载该对象,会累计产生N+1条sql语句

@Fetch(FetchMode.SUBSELECT)  默认懒加载(除非设定关联属性lazy=false),在访问第一个关联对象时加载所有的关联对象。会累计产生两条sql语句。且FetchType设定有效。

分享到:
评论
1 楼 会爬的老鼠 2013-05-19  
   

相关推荐

    Hibernate 1+N问题详解

    #### 二、FetchType.EAGER与FetchType.LAZY的区别 **1. FetchType.EAGER:** - 当使用`EAGER`加载方式时,关联的数据会在主数据查询时一同获取。 - 这种方式的好处在于可以减少后期查询数据库的需求,提高效率。 -...

    day36 06-Hibernate抓取策略:set集合上的抓取策略

    5. **选择性抓取(Lazy with Fetch)**:结合懒加载和批处理,可以使用`@OneToMany(mappedBy = ..., fetch = FetchType.LAZY, targetEntity = ..., cascade = CascadeType.ALL, fetch = FetchType.EAGER)`来指定只在...

    hibernate5--4.检索方式及策略

    例如,`@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "user", fetchSize = 10)` 设置了User对象的子对象集合每次加载10个。 5. **Scrollable Result Set**: 对于大量数据,滚动结果...

    hibernate一对多实例

    @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "department_id") private Department department; // getters and setters } ``` 2. 一方实体(例如:部门实体Department) 一方实体可能有多个多方...

    8 映射-- 一对多(部门对员工)

    - Hibernate支持懒加载,允许在需要时才加载关联的员工集合,这可以通过`fetch="LAZY"`(XML)或`@OneToMany(fetch = FetchType.LAZY)`(注解)来设置。 - 级联操作(如`CascadeType.ALL`)可以控制对关联对象的...

    多表链接1

    - 使用`@Fetch(FetchMode.JOIN)`可以避免N+1查询问题,通过一次JOIN查询获取所有关联数据。 6. **性能考虑**: - 当处理一对多关系时,要注意避免大数据量的关联查询,可能导致内存溢出或性能下降。合理使用`@...

    hibernate-release-5.0.7.Final.zip官方

    ### Hibernate 5.0.7.Final版本解析与应用指南 #### 一、概述 Hibernate 是一款开源的对象关系映射(Object-Relational Mapping,简称 ORM)框架,它为 Java 应用程序提供了对数据库存储的高效管理和访问能力。...

    hibernate_annotations.rar

    - `@Basic(fetch = FetchType.LAZY)`: 实现懒加载,只有在真正使用到属性时才去查询数据库。 - `@Fetch(FetchMode.JOIN)`: 强制执行Eager加载,即在查询主实体时一同加载关联的实体。 6. **索引和唯一性注解** -...

    Hibernate一对多

    另外,使用`@LazyCollection(LazyCollectionOption.EXTRA)`或`@OneToMany(mappedBy ..., fetch = FetchType.LAZY)`可以实现懒加载,只在需要时加载子对象集合,减少内存消耗。 **六、总结** 理解并熟练掌握...

    Hibernate实例

    -延迟加载:使用`@OneToMany(mappedBy = "...", fetch = FetchType.LAZY)`等策略减少内存占用。 八、整合Spring 与Spring框架结合使用,可以利用Spring的依赖注入和事务管理,简化代码,提高可维护性。 通过以上...

    Hibernate-AdvancedMappings:创建存储库以发布我在Hibernate中使用高级映射(一对一,一对多,多对多)的工作

    同时,还可以使用`@OrderColumn`来控制子集合的排序,`@Fetch(FetchMode.JOIN)`来决定是否进行联接查询。 3. **多对多映射(Many-to-Many)**: 多对多映射表示两个实体之间存在多个对应关系。比如,学生可以选修...

Global site tag (gtag.js) - Google Analytics