ibernate中,如果在映射对象关系的时候,在一对多中(process->nodes)如果设置了lazy load(懒加载),
例如:
@Entity
@Table(name = "CUS_PROCESS_NEW")
public class CusProcess {
// 过程中的节点
private List<CusNode> nodes;
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "process")
@Cascade( org.hibernate.annotations.CascadeType.DELETE_ORPHAN )
public List<CusNode> getNodes() {
if (nodes == null) {
nodes = new ArrayList<CusNode>();
}
return nodes;
}
public CusNode startNode(){
if (nodes != null && nodes.size()>0) {
return nodes.get(0);
}else{
return null;
}
}
那么根据process得到nodes时,需要特殊处理。或者在上面的class文件中定义fetch = FetchType.EAGER,或者在取得cusprocess对象时,强迫加载一下nodes
如下:
public CusProcess getCusProcess(Integer processId) {
if (processId == null) {
return null;
}
CusProcess result=session.get(CusProcess.class, processId);
//读取一下startNode避免懒加载错误。
result.startNode();
return result;
}
Hibernate
的强大之处之一是懒加载功能,可以有效的降低数据库访问次数和内存使用量。但用的不好就会出现org.hibernate
.LazyInitializationException。
这个异常出现的原因很简单,主要时在加载懒数据时Session已经关闭造成的。
例如:
在一个类中用下面的代码:
protected void createCusForm() {
CusRequest cusRequest = auditSvc.createRequest(name, procId,bsMgr.getBsEmployeeById(empId),
null,true,null,null,true);
Integer startNodeId = cusRequest.getProcess().startNode().getId();
}
其中的createRequest是一个@Transactional,里面有代码:
final CusProcess process = compDao.getCusProcess(processId);
这样在 createRequest完成后,事物完毕,session也关闭,在下面的
cusRequest.getProcess().startNode()时就会出错,因为懒加载方法没有加载nodes。
分享到:
相关推荐
懒加载案例 lazyload 自己做了一个懒加载的案例,供大家参考
hibernate 中的lazy属性的使用
JQuery LazyLoad 图片懒加载实例,相关描述可查看我的博文“JQuery.LazyLoad 实现图片懒加载”
主要介绍了hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法,需要的朋友可以参考下
去除预加载的Viewpager,加载第一页时不会默认加载第二页,
优化网站加载速度,使用lazyload.js,有完整的demo,有jquery.lazyload.js和jquery-1.11.0.min.js
Dwr+Hibernate的Lazy问题 解决了Hibernate延迟加载失效问题
NULL 博文链接:https://xuwoool.iteye.com/blog/1306207
Hibernate 的 lazyload 在FLEX中的解决方法例子 用的是gilead 因为LIB包太大上传很慢所以被我删掉了。
应用lazyload.js 插件实现图片懒加载
Hibernate延时加载与lazy机制.docHibernate延时加载与lazy机制.doc
LazyLoad,延时,懒加载,加载,图片,效果,特效,.rar,实用,网页,速度
深入理解hibernate懒加载技术,正确使用懒加载
jquery.lazyload.js 图片懒加载 --demo
NULL 博文链接:https://tangzongyun.iteye.com/blog/2399501
前端经典——lazyload懒加载
网上关于androidx的fragment懒加载文章已经有很多,各有侧重。几乎都点到了sexMaxLifecycle和修改FragmentPagerAdapter。很少看到经过实践的文章,谨以此文,更加详尽的把实践后的结果记录下来,赠予有缘人。 一、...
JQuery Lazyload加载图片实例
懒加载 按需加载 lazyload 原生来写的,全匹配支持懒加载
LazyLoad 原生 JavaScript 实现的懒加载库,兼容到 IE8