懒加载

转载 2015年11月18日 20:31:43

原文地址:http://blog.csdn.net/mayouarebest8621/article/details/7071850

 1、懒加载:是指程序推迟访问数据库,这样做可以保证有时候不必要的访问数据库,因为每次访问数据库都是比较耗时的即只有真正使用该对象的数据时才会创建。Hibernate中主要是通过代理机制来实现延迟加载:Hibernate从数据库获取某一个对象数据时、获取某一个对象的集合属性值时,或获取某一个对象所关联的另一个对象时,由于没有使用该对象的数据,hibernate并不是数据库加载真正的数据,而只是为该对象创建一个代理对象来代表这个对象,这个对象上的所有属性都是默认值;当在真正需要使用该对象的数据时才创建这个真实对象,真正从数据库中加载它的数据,从而减少所耗的时间。

2、Load()方法的懒加载:如否在session关闭之前没有对数据库进行访问或进行队所有load对象进行初始化,则会报错。因为在访问数据库之前load()方法懒加载返回的是一个代理对象,不能获取到他得属性。如果在session关闭前访问了数据库或者队load进行了初始化。则会访问数据库查询并给代理复值。

 

3、hibernate默认都是使用懒加载的。如果定义的查询方法,没有队实例化中的代理对象进行初始化,却调用了此方法会报错。因为session关闭前没有对其初始化。

a)        当调用session上的load()加载一个实体时,会采用延迟加载。

b)        当session加载某个实体时,会对这个实体中的集合属性值采用延迟加载

c)        当session加载某个实体时,会对这个实体所有单端关联的另一个实体对象采

4、session.load懒加载。

5、one-to-one(元素)懒加载:

       懒加载默认是关闭的,只有基于外键关联方式的“一对一”才用懒加载。必需同时满足下面三个条件时才能实现懒加载

       (主表不能有constrained=true,所以主表没有懒加载)

       lazy!=false 2)constrained=true 3)fetch=select

6、one-to-many (元素)懒加载:

       当我们查询的是主对象时,将person和idcard外连接查询出person对象和idcard对象没有懒加载。当我们查询的是从对象时,对于idcard所关联的person对象是懒加载。

       这种关联方实质性懒加载是非常有效的,Hibernate默认对它就是使用懒加载的,默认就是以下条件:

1)lazy!=false 2)fetch=select

7、.many-to-one (元素) :

有没有都可以,因为执行效率不明显,默认执行条件:

1)lazy!=false 2)fetch=select

8、.many-to-many (元素) :

这种关联方实质性懒加载是非常有效的,Hibernate默认对它就是使用懒加载的,默认就是以下条件:

1)lazy!=false 2)fetch=select

9、.能够懒加载的对象都是被改写过的代理对象,当相关联的session没有关闭时,访问这些懒加载对象(代理对象)的属性(getId和getClass除外)hibernate会初始化这些代理,或用Hibernate.initialize(proxy)来初始化代理对象;当相关联的session关闭后,再访问懒加载的对象将出现异常。

10、            抓取策略

a)        select:作为默认值,它的策略是当需要使用到关联对象的数据时另外单独发送select语句,抓取当前对象的关联对象的数据。即懒加载。

b)        join:他的策略时使用一条select语句用内连接来获取对象的数据和关联对象的数据,此时关联对象的懒加载失效。

 

 

 

相关文章推荐

MVC+EasyUITreeGrid懒加载示例

  • 2017年11月06日 17:46
  • 6.91MB
  • 下载

JQueryLazyLoad 图片懒加载实例

  • 2013年12月23日 16:20
  • 1.51MB
  • 下载

Hibernate懒加载异常理解和解决方案

今天跟同事聊天聊到Hibernate的懒加唱载

IOS_图片浏览器V3.0(懒加载优化

  • 2015年06月02日 20:42
  • 436B
  • 下载

图片懒加载

  • 2017年05月19日 08:54
  • 1.27MB
  • 下载

fragment懒加载小总结

总结一下fragment懒加载 前提:tabLayout+viewPager+fragment,不考虑fragment销毁(我一般做法是直接覆盖掉destroyItem方法) BaseFragment...

懒加载案例lazyload

  • 2016年08月27日 13:07
  • 1016KB
  • 下载

Andriod开发技巧——Fragment的懒加载

我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个fragment都需要去加载数据,或从本地加载,或从网络加载,那么在...

懒加载,响应式

  • 2013年12月27日 09:25
  • 44KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:懒加载
举报原因:
原因补充:

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