您的位置:首页 > 其它

解决hibernate懒加载的问题的几种方式

2015-11-17 15:54 459 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yingziok888/article/details/49888619 当我们使用${loginuser.department.name}  时候,懒加载问题出现:

解决思路:

1. 明确初始化

       在session还没有关闭时,访问一次 xxx.getXxx(),强制访问数据库。或者Hibernate.initialize(xxx)

               //显示初始化懒加载
        Hibernate.initialize(Department.class); //会输出select语句预先查询

2        在对象映射文件中 取消懒加载  <lazy=”false”/>

              <class name="Department" table="department" lazy="false">

上面方法问题是: 不管你在jsp中使不使用 部门的名称,它都有向数据库发出select 请求.

3.      spring专门提供了opensessioninview的方法来解决懒加载.

需要在web.xml文件中添加如下配置:

<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>

 

该方法可以有效的减少对数据库的查询,缺点是和数据保持的session,时间延长了.


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: