具体问题?如果我们在 mainFrame.jsp中要求显示该雇员所在部门的时候
${loginuser.department.name} 时候,懒加载问题出现:
解决思路:
1. 明确初始化
在session还没有关闭时,访问一次 xxx.getXxx(),强制访问数据库。或者Hibernate.initialize(Department.class)
2。 在对象映射文件中 取消懒加载 <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,时间延长了.