`

hibernate的fetch和lazy

阅读更多
fetch是Hibernate设置抓取策略的。
当fetch的值为select时,会先查询出主持久化对象,然后再根据持久化对象的外键去查询关联对象,所以若是带查询的持久化对象有N个,则会先用一条SQL查询所有的持久化对象,然后再发送N条根据每个持久化对象外键关联查询重表。所以会产生N+1的问题。(若是只有一个主的持久化对象则不碍)
fetch为join时,会使用一条SQL语句查询出主对象以及关联的对象。因此不会产生N+1问题。
lazy有3种值,即true,false,proxy。
当lazy为false时,fetch为select。如果是查询一个持久话对象,会立即使用2条SQL语句,若是lazy为true,也是使用2条SQL语句,只是第二条会在使用关联对象时再查询。
当lazy为false时,fetch为join,这时延迟加载已经不起作用了,因为使用get或是list会一同把关联数据查询出来。

对于hql查询,在映射文件中设置join是不起作用的。
多是映射文件中配置的是select,则hql使用left join fetch等是会使用join的方式查询。
分享到:
评论

相关推荐

    Hibernate Fetch 的作用

    在Hibernate中,主要有两种Fetch策略:Eager(急切)和Lazy(懒惰)。默认情况下,Hibernate使用Lazy策略,这意味着关联对象不会立即加载,除非显式访问它们。这有助于提高应用程序的性能,因为不必要的数据不会被...

    hibernate 中的lazy属性祥解.txt

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

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

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

    hibernate的lazy策略forClass

    在压缩包文件`hibernate_lazy_for_class`中,可能包含了相关的代码示例、配置文件或日志文件,用于更深入地学习和分析Hibernate的懒加载策略在实际项目中的应用。通过阅读和分析这些资源,开发者可以更好地理解和...

    Hibernate lazy延迟加载

    **标题**: Hibernate懒加载(Lazy Loading) 在Java的持久化框架Hibernate中,懒加载(Lazy Loading)是一种重要的优化策略,它的核心思想是“延迟加载”或“按需加载”。默认情况下,当一个实体被加载时,并不会...

    hibernate在集合上的lazy策略

    5. **性能优化**:讨论如何根据业务需求调整懒加载策略,以平衡性能和内存使用,可能涉及Eager Fetching、Fetch Graphs和JOIN fetch。 6. **Open Session in View(OSIV)模式**:如果文章涉及,可能会介绍这个模式...

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

    标题"当设置lazy=true时,怎样使用ExtJS和Hibernate"所涉及的知识点主要集中在如何在ExtJS前端应用中与使用了懒加载特性的Hibernate后端进行交互。以下是对这个主题的详细解释: 1. **Hibernate懒加载**: - 懒...

    Hibernate lazy加载FOR Connection

    FetchType.LAZY和FetchType.EAGER是两种主要的加载策略,前者对应懒加载,后者则是在加载主对象时同时加载关联对象。 总之,Hibernate的懒加载机制对于提高应用程序的性能和优化数据库交互具有重要意义。开发者需要...

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

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

    hibernate

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

    hibernate在单端关联上的lazy策略

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

    Hibernate 经典例子全

    在`hibernate_fetch_1`示例中,我们了解到Hibernate的加载策略,包括Eager Fetching(即时加载)和Lazy Fetching(延迟加载)。即时加载会在查询时一起加载关联的对象,而延迟加载则只在真正需要时才执行数据库查询...

    hibernate源码下载

    在Hibernate中,Fetch策略包括EAGER(即时加载)和LAZY(延迟加载)。EAGER策略会立即加载关联的对象,而LAZY策略则会在需要时才进行加载,以优化性能。例如,`hibernate_fetch_5`可能涉及了多对一、一对多、一对一...

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

    在本教程中,我们将深入探讨Hibernate中的关联关系及其在CRUD操作中的应用,特别是关于Cascade和Fetch策略。Hibernate是Java领域广泛使用的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来处理数据库交互...

    hibernate aip hibernate aip

    7. **性能优化**:包括延迟加载(Lazy Loading)、批处理(Batch Processing)、缓存策略调整等,这些都可以提升Hibernate应用的性能。 8. **查询优化**:避免N+1查询问题,使用JOIN fetch提前加载关联数据,使用...

    优化Hibernate性能的几点建议

    为了避免这种情况,可以采用懒加载(`lazy loading`)策略,并适当使用集合映射(`collection mapping`)和关联映射(`association mapping`)来管理实体之间的关系。 #### 六、使用级联操作简化数据操作 Hibernate提供...

    Hibernate-基础联表模板

    Hibernate提供了EAGER和LAZY两种加载策略。EAGER策略会立即加载关联数据,而LAZY策略则在需要时才加载,以提高性能。在联表查询时,选择合适的Fetch策略很重要。 9. **Criteria API中的Join操作** 使用Criteria ...

    HibernateDemo(hibernate基本用法演示)

    9. **延迟加载(Lazy Loading)**:通过 `@OneToMany(mappedBy = "..." fetch = FetchType.LAZY)` 可以实现懒加载,只有在真正需要时才会加载关联的对象,避免了数据冗余。 10. **事件监听**:可以注册事件监听器,...

    hibernate release 4.3.4 官网下载包

    而Fetch类型则控制了关联对象的加载策略,如EAGER和LAZY加载。 总的来说,Hibernate 4.3.4是一个功能强大的ORM框架,为Java开发者提供了便捷的数据访问机制,大大简化了数据库操作。下载这个版本的包,开发者可以...

    hibernate源码

    文件`hibernate_fetch_1`与`hibernate_query_cache`涉及到的是Hibernate的数据检索和查询缓存。Hibernate提供了多种加载策略,包括立即加载(Eager Fetching)和延迟加载(Lazy Loading)。立即加载会一次性获取...

Global site tag (gtag.js) - Google Analytics