懒加载

转载 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语句用内连接来获取对象的数据和关联对象的数据,此时关联对象的懒加载失效。

 

 

 

使用JS进行图片懒加载

前几天修改了之前APP的一些功能,发现图片的加载太慢了,而且一个页面显示太多图片的话其他js什么的也都延迟了加载,造成事件方法未加载、操作无效果,用户体验差。原因除了图片显示的有点多之外还有我们的服务...
  • github_37125043
  • github_37125043
  • 2017年05月15日 16:35
  • 1043

实现ViewPager懒加载的三种方法

在项目中ViewPager和Fragment接口框架已经是处处可见,但是在使用中,我们肯定不希望用户在当前页面时就在前后页面的数据,加入数据量很大,而用户又不愿意左右滑动浏览,那么这时候ViewPag...
  • baidu_26654149
  • baidu_26654149
  • 2016年03月28日 20:09
  • 16759

MyBatis懒加载

resultMap可以实现高级映射,即使用association和collection实现一对一、一对多的映射,association和collection具备懒加载的功能。懒加载可以提高数据库性能,...
  • qzc70919700
  • qzc70919700
  • 2017年04月06日 17:09
  • 1802

优雅的懒加载方法

最近在重构公司公司的主页,其中用到了懒加载,所以找了网上的懒加载的介绍的博客,读了好几篇关于懒加载的文件,发现不是讲解太简单,就是代码不够清晰,而且在懒加载的实现原理上没有透彻的讲清楚,在实际应用实践...
  • sunshine2050_CSDN
  • sunshine2050_CSDN
  • 2016年07月23日 02:55
  • 1834

案例-懒加载-web-javascript学习

懒加载 body,html{width:100%;margin:0;padding:0;} #box{width:100%;} #box ul{width:840px;padding:...
  • u013299635
  • u013299635
  • 2017年06月10日 12:50
  • 295

java懒加载异常的解决

在使用ssh框架时,要实现一个级联功能,映射关系 one-many,加载one一级时没问题,但要加载many级时,会出现懒加载异常的问题。org.hibernate.LazyInitializatio...
  • yangmaodehaozi1990
  • yangmaodehaozi1990
  • 2017年02月25日 20:54
  • 865

Vue2.0实现懒加载

import Vue from ‘vue’ import Router from ‘vue-router’Vue.use(Router)export default new Router({ r...
  • SUNLYH2_2
  • SUNLYH2_2
  • 2017年06月16日 10:08
  • 779

原生js懒加载

原生js懒加载         div{width:100px;height:100px;background:#F00;margin-bottom:30px}        ...
  • sinful
  • sinful
  • 2015年08月21日 17:47
  • 3574

jquery.lazyload.js实现图片懒加载

jquery.lazyload.js实现图片懒加载:个人理解是将需要延迟加载的图片的src属性全部设置为一张相同尽可能小(目的是尽可能的少占宽带,节省流量,由于缓存机制,当浏览器加载了一张图片之后,相...
  • fuyifang
  • fuyifang
  • 2014年10月26日 10:27
  • 3855

Android优化方案之--Fragment的懒加载实现

一、背景在Android应用中,ViewPager是我们不可避免使用的一个控件,因为它可以使我们在占用较少空间的同时,增强内容的丰富性,同时以其内部流淌着Google的血液,所以它几乎成了每一个App...
  • ljcITworld
  • ljcITworld
  • 2017年08月24日 12:18
  • 3841
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:懒加载
举报原因:
原因补充:

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