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;
这就是所谓的批量加载机制。
Hibernate数据加载方式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
JPA 、 Hibernate 注解
yangyangisse
2018-08-27 20:03:00
Hibernate的关联映射
entomb
2018-08-27 20:02:04
Hibernate延时加载
iteye_11720
2018-08-27 18:56:16
Hibernate持久化对象的状态
明眸若雪
2018-08-27 18:48:13
Hibernate注解方式单表操作
shenshuibomb
2018-08-27 18:07:30
Hibernate单表操作
shenshuibomb
2018-08-27 18:06:51
hibernate注解方式实现一对多映射
shenshuibomb
2018-08-27 18:06:51
Hibernate一对多映射
shenshuibomb
2018-08-27 18:06:50
A simple Hibernate sample
shenshuibomb
2018-08-27 18:06:50
Hibernate中get和load的一点点区别。
shenshuibomb
2018-08-27 18:06:49
在Hibernate中配置一对多连接表
a157775541
2018-08-27 18:03:52
在Hibernate中配置多对多连接表
a157775541
2018-08-27 18:03:50
Hibernate 映射关系 ---One2Many单向关联
qq_28059559
2018-08-27 17:53:33
Hibernate 映射关系 ---Many2Many 单向关联
qq_28059559
2018-08-27 17:53:33
Hibernate 映射关系 ---One2Many 双向关联
qq_28059559
2018-08-27 17:53:22
最新文章