hibernate—延迟加载

原创 2016年08月28日 21:27:25

工作也有一段时间了,感觉过去的时间里学到了很多东西,又感觉没什么实质性的作用,开发速度再快,完成的再好也不会因此而跟你升职加薪什么的,最多也就是赢得大家的认可。这也是印证了公司技术总监的那句话,工作中只是教你如何将一些技术用的熟练通透,其他的东西还是得靠自己自学,好了,今天就谈一下hibernate延迟加载的实现问题。

其实很多人面试的时候公司都会问你hibernate是怎样实现延迟加载的问题。或者是hibernate2和hibernate3是如何实现的;又或者是hibernate2通过实体对象和集合实现的原理是什么。其实不需要看源码,查阅一下资料就可以得到hibernate实现延迟加载主要是一下三种:

(1)当Session上的load()方法加载一个实体时,会采用延迟加载。

(2)当Session加载某个实体时,会对这个实体的集合属性值采用延迟加载。

(3)当Session加载某个实体时,会对这个实体所单端关联的另一个实体对象采用延迟加载。

Session的load()方法对实体的加载默认采用延迟记载,而get()方法默认的是采用立即加载,如果访问对象标识符属性。它就没有必要初始化代理。

延迟加载确实会给程序的查询效率带来好处,但是有时明确知道数据需要立即加载时,如果Hibernate先默认的使用延迟加载,而后又必须去数据库加载,反而会降低效率,所以,需要根据应用程序的实际情况来灵活的控制是否使用延迟加载,在Hibernate中只需要修改响应的配置来启用或者关闭延迟加载功能:

(1)在记载单个实体,如果不需要延迟记载,就可以使用Session的get()方法。

(2)当Session加载某个实体时,不需要对这个实体中的集合属性延迟加载,而是要立即加载,这个时候可以配置注解lazy=false。

(3)当Session加载某个实体时,不需要对这个实体所单端关联的另一个实体对象延迟记载,也可以添加属性lazy=false。



以上差不多就是我所知道的,此博客只做记录功能,方便后期回忆,也为后期学习别的做基础。当然不喜勿喷,有错误麻烦留言指正,我会根据实际情况及时更改。谢谢大家。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java项目经验——程序员成长的钥匙

本文转载至:http://geek.csdn.net/news/detail/109880,像我这样的菜鸟应该多看几遍这样的文章,学起来才更加有动力和方向。     Java就是用来做项目的!J...

一年经验Java程序员面试经

时光转瞬即逝,一年时间已经过去,自己准备跳槽了,请了几天假,面试了几家公司之后,拿到了一份offer,有了一点儿小小的心得,记录下来分享给搞Java的朋友,面试主要是几个部分内容。 很多公司会要求笔...

java程序员—工作中开发经验总结

工作也有一段时间了,其实很多的时候,一直是重复重复再重复的写着业务逻辑代码。除了上班以外,自学是一方面,还有一个很重要的方面就是总结了,前些天在最代码上看到了一篇《关于公司WEB项目源码团队协作开发的...

Hibernate性能优化之————延迟加载与抓取策略

Hibernate性能优化之————延迟加载与抓取策略   懒加载【延迟加载】: 主要目的: 为了推迟与数据库交互的时间,提高系统的系能 它是hibernate为提高程序执行效率而提供的一种...
  • w_l_j
  • w_l_j
  • 2011-12-14 15:51
  • 3148

hibernate延迟加载

  • 2012-10-07 10:44
  • 26KB
  • 下载

hibernate延迟加载

级联配置是设置外键关联时使用,具体表现就是在一个Pojo类中,有Set xxx; name:没什么解释,在pojo类中有files属...

hibernate延迟加载解决

  • 2013-08-19 23:33
  • 32KB
  • 下载

Hibernate延迟加载

  • 2013-03-19 22:16
  • 15KB
  • 下载

hibernate lazy(延迟加载) 的使用

本文转载自:http://www.chinaovo.net/hibernate/253.htm hibernate lazy策略可以使用在: * 标签上,可以取值:true/fal...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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