延迟加载

来源:互联网 发布:n卡610m怎么优化 编辑:程序博客网 时间:2024/06/02 11:05

延迟加载(lazy load)是(也称为懒加载)Hibernate3关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。
可以简单理解为,只有在使用的时候,才会发出sql语句进行查询。

Hibernae 的延迟加载是一个非常常用的技术,实体的集合属性默认会被延迟加载,实体所关联的实体默认也会被延迟加载。Hibernate 通过这种延迟加载来降低系统的内存开销,从而保证 Hibernate 的运行性能。
延迟加载的有效期是在session打开的情况下,当session关闭后,会报异常。当调用load方法加载对象时,返回代理对象,等到真正用到对象的内容时才发出sql语句。
Hibernate2实现延迟加载有2种方式:1.实体对象 2.集合
Hibernate3中又引入了一种新的加载方式:3.属性的延迟加载
一般使用load()的方法来实现延迟加载,在实现无限级联动使用延迟加载效率比较好
延迟加载是hibernate中用于提高查询效率的一种措施,它的对立面是立即加载。

默认情况下,Hibernate 会采用延迟加载来加载关联实体,不管是一对多关联、还是一对一关联、多对多关联,Hibernate 默认都会采用延迟加载。

对于关联实体,可以将其分为两种情况:

· 关联实体是多个实体时(包括一对多、多对多):此时关联实体将以集合的形式存在,Hibernate 将使用 PersistentSet、PersistentList、PersistentMap、PersistentSortedMap、PersistentSortedSet 等集合来管理延迟加载的实体。这就是前面所介绍的情形。

· 关联实体是单个实体时(包括一对一、多对一):当 Hibernate 加载某个实体时,延迟的关联实体将是一个动态生成代理对象。


0 0