码迷,mamicode.com
首页 > 其他好文 > 详细

延迟加载

时间:2015-08-07 22:08:52      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

1.什么是延迟加载

  在使用某些Hibernate方法查询数据时,Hibernate返回的只是一个空对象(除id外属性都为null),并没有真正查询数据库。而在使用这个对象时才会触发查询数据库,并将查询到的数据注入到这个空对象中。这种将查询时机推迟到对象访问时的机制称之为延迟加载。

2.为什么使用延迟加载

  可以提升内存资源的使用率

  可以降低对数据库的访问次数

3.采用了延迟加载的方法

  session.load()

  query.iterate()

  关联映射中对关联属性的加载

4.使用延迟加载需要注意的问题

  采用具有延迟加载机制的操作,需要避免session提前关闭session.

  可以采用以下2种方案解决此问题

    采用非延迟加载的查询方法,如query.get()、session.list()等。

    在使用对象之后再关闭session。

5.Open session in view

  在项目中,DAO只是负责查询出数据,而使用数据的时机是在JSP解析过程中,因此要避免在DAO中关闭session,或者说要在试图层保持session的开启。

  项目中解决这个问题的手段称之为Open session in view,即在试图层保持session的开启。

  在不同的技术框架下,实现Open session in view的手段不同:

    在Servlet中使用过滤器实现。

    在Struts2中使用拦截器实现。

    在Spring中使用拦截器实现。

6.延迟加载实现原理

  采用延迟加载方法,返回的对象类型是Hibernate采用CGLIB技术在内存中动态生成的类型,该类型是原实体类的子类,并在子类中重写了属性的get方法。

延迟加载

标签:

原文地址:http://www.cnblogs.com/Crow00/p/4711877.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!