Hibernate数据加载方式

转载 2012年03月24日 09:06:37


Hibernate数据加载方式有以下几种。

一、即时加载(Immediate Loading)

当实体加载完成后,立即加载与实体相关联的数据。即当实体加载完成后,Hibernate自动立即读取与实体相关联的数据,并且填充到实体对应的属性中。这种加载通常有多条select语句,即select实体数据后,同时select实体相关联的数据。

二、延迟加载(Lazy Loading)

实体加载时,其关联数据并不是立即读取,而是当关联数据第一次被访问时再进行读取,这种加载方式在第一次访问关联数据时,必须在同一个session中,否则会报session已关闭错误。

延迟加载通过在实体的hbm文件中的对应属性中设定lazy="true"实现。Hibernate3默认的加载方式是延迟加载。即默认lazy="true",主要用于one-to-many场合。

三、预先加载(Eager Loading)

预先加载时,实体及关联对象同时读取,与即时加载类似,但是预先加载是使用"outer-join"通过一条select语句同时读取。

注意:当实体间关联比较复杂时,比如多层关联,Hibernate生成的"outer join SQL"可能过于复杂,此时可以通过设定全局变量(hibernate.max_fetch_depth)限定join的层次(一般设定为5层)。

四、批量加载(Batch Loading)

对于即时和延迟加载,可以采用批量加载进行优化。

批量加载就是通过批量提交多个限定条件,一次多个限定条件的数据读取。同时在实体映射文件中的class节点,通过配置"batch-size"参数打开批量加载机制,并限定每次批量加载数据的数量,一般来说该值<10较合理。

比如:
select * from test where id=1;
select * from test where id=2;
我们可以整合成一条语句:
select * from test where id=1 ro id=2;
这就是所谓的批量加载机制。


本文链接:http://www.snowdi.com/452.html → 转载请注明文章出自雪頔网

Hibernate的加载方式——GET与LOAD的对比

在Hibernate框架中,最常用到的加载方式就非Get和Load莫属了,然而Get和Load在加载方式上边还有很多的不同,下面让我们来分析一下他们的不同之处。 区别        从返回...
  • happylee6688
  • happylee6688
  • 2013年12月14日 10:00
  • 3823

Hibernate查询数据的几种方式:

1.导航对象图查询:根据已经加载的对象,导航到其他对象。例如,对于已经加载的Customer对象,调用它getOrders().iterator()方法就可以导航到所有关联的Order对象,假如在关联...
  • SUN_song520
  • SUN_song520
  • 2015年12月26日 11:49
  • 4339

Hibernate和Spring的延迟加载和DAO模式

Hibernate和Spring的延迟加载和DAO模式 原文:http://www.jroller.com/page/kbaum/20040708 作者:Karl Baum 译者:zcgly ...
  • mr_orange_klj
  • mr_orange_klj
  • 2015年01月16日 15:15
  • 986

hibernate懒加载(lazy加载)

所谓懒加载(lazy)就是延时加载,延迟加载。当两个及以上表使用hibernate来管理级联关系时,一个表被加载到jvm内存时,其相关表可以暂存在数据库的缓存中,当需要使用相关表数据时在加载到jvm内...
  • qq_21033663
  • qq_21033663
  • 2016年04月24日 22:26
  • 1307

Hibernate加载配置文件的两种方法

细节问题的解决:org.hibernate.DuplicateMappingException
  • u012382534
  • u012382534
  • 2015年06月05日 10:55
  • 4825

Hibernate查询数据的五种方式

1.导航对象图查询:根据已经加载的对象,导航到其他对象。 例如,对于已经加载的Customer对象,调用它getOrders().iterator()方法就可以导航到所有关联的Order对象,假...
  • xiaozaq
  • xiaozaq
  • 2016年09月20日 10:06
  • 2026

hibernate延迟加载(懒加载)详解

Hibernae 的延迟加载是一个非常常用的技术,实体的集合属性默认会被延迟加载,实体所关联的实体默认也会被延迟加载。Hibernate 通过这种延迟加载来降低系统的内存开销,从而保证 Hib...
  • xuyukun121
  • xuyukun121
  • 2016年04月19日 13:54
  • 2794

hibernate中懒加载禁用的方式

懒加载的概念:懒加载就是hibernate中的延迟加载,在hibernate中的一对多,多对多关系中通过对象导航来查询对象时一般默认的就是懒加载。就是当我们查询一个对象的时候,在默认情况下,返回的只是...
  • haha_66666
  • haha_66666
  • 2017年11月20日 21:46
  • 177

解决Hibernate懒加载的4种方式

http://blog.csdn.net/huhui_cs/article/details/8589977 本文总结了我在学习hibernate的过程中,解决hibernate懒加载问题的四...
  • chunxing8238
  • chunxing8238
  • 2017年11月10日 16:35
  • 297

hibernate操作数据库总结

这篇文章用于总结hibernate操作数据库的各种方法 一、query方式 1、hibernate使用原生态的sql语句执行数据库查询 有些时候有些开发人员总觉得用hql语句不踏实,程序出现了错...
  • dreamrealised
  • dreamrealised
  • 2013年06月29日 15:07
  • 1936
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate数据加载方式
举报原因:
原因补充:

(最多只允许输入30个字)