hibernate中fetch=FetchType.LAZY懒加载失败处理方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

hibernate中fetch=ZY懒加载失败处理⽅法
对这种懒加载问题,最后的做法是利⽤Spring提供的⼀个针对Hibernate的⼀个⽀持类,其主要意思是在发起⼀个页⾯请求时打开Hibernate的Session,⼀直保持这个Session,使得Hibernate的Session的⽣命周期变长,直到这个请求结束,具体是通过⼀个Filter来实现的。

那么,如果现在我们想⽤Hibernate懒加载特性,⼜想⽤延长session的⽣命周期,知道将数据提到页⾯显⽰(经过action层),那么我们就得在web.xml⽂件中增加以下配置:
<!-- 配置Spring的⽤于解决懒加载问题的过滤器 -->
<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>*.action</url-pattern>
</filter-mapping>
注:1)OpenSessionInViewFilter为过滤器名字,*.action表⽰拦截所有的action,也可以 /*
2)⾮ web 页⾯请求(如定时任务)可以按下⾯的⽅式进⾏处理(Hibernate.initialize(Object proxy) ⽅法强制加载这样就相当于动态改变为lazy=fals)
/**
* @Author masl - 2017/9/28 14:22
* @param setRepaymentId
* @param initSubs :是否初始化关联表数据
* @return
*/
@Override
public SetRepayment findSetRepaymentById(Integer setRepaymentId, boolean initSubs) {
SetRepayment setRepayment = null;
if (setRepaymentId != null) {
setRepayment = setRepaymentDao.get(setRepaymentId);
if (setRepayment != null && initSubs) {
Hibernate.initialize(setRepayment.getSetIncomes());
}
return setRepayment;
}
return null;
}
总结
以上所述是⼩编给⼤家介绍的hibernate 中 fetch=ZY 懒加载失败处理⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。

在此也⾮常感谢⼤家对⽹站的⽀持!。

相关文档
最新文档