懒加载为hibernate中比较常用的特性之一,下面说一下解决懒加载的几种方式
1.显式初始化(在查询方法内部)
要查询某员工属于哪个部门的时候,需要对Department进行预先查询
使用语句
Hibernate.initialize(Department.class);
2.修改对象关系文件,将lazy 改写lazy = false,即关闭懒加载
以上两种方法,确实可以解决问题,但是缺点是无论后面是否使用该对象,hibernate都会向数据库发出SQL语句请求数据,造成不必要的性能浪费。
3.使用过滤器(web项目)
①获取session的方式必须使用getCurrentSession
4.在SSH框架中,使用spring提供的openSessionView
其原理和第三种方法中使用Filter类似,只不过这个filter是spring提供的。使用时只需要在web.xml文件配置如下:
②特殊的关闭session方式
<filter> <filter-name>OpenSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>OpenSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>