解决hibernate延迟加载的问题:
在Dao层的方法中添加一个是否获取延迟加载List的参数(如传入一个枚举参数);
在Dao获取数据后,判断延迟加载参数,如果获取延迟加载参数为true,则创建一个新的列表,构造器的参数为获取延迟加载的集合,然后将新的集合set到对象属性中,这样在dao层外就可以访问延迟加载的数据了。
简单的代码如下:
Student.java
private String name;
private List<Course> courseList;
Dao.java
...
public Student queryStudent(Integer studentId, FetchCourseEnum fetchCourse) {
Student student = .......;
if(fetchCourse.YES.equalse(fetchCourse) {
List<Course> courseList = new ArrayList<Course>(student.getCourseList());
student.setCourseList(courseList);
}
return student;
}
...
延迟加载的数据不能再dao层外面获取的原因:在dao层外,session就关闭了,所以在dao层外访问延迟加载的数据会抛异常。
分享到:
相关推荐
Hibernate延迟加载以及利用Spring 大家看看 参考一下
详细介绍hibernate延迟加载,对hibernate初学者有一定的帮助
hibernate延迟加载解决 延迟加载的具体解决方法
Hibernate 延迟加载
Hibernate延迟加载机制.zip
Hibernate延迟加载Hibernate延迟加载
hibernate延迟加载技术详细解 ,http://www.che2.com/提供
Hibernae 的延迟加载是一个非常常用的技术,实体的集合属性默认会被延迟加载,实体所关联的实体默认也会被延迟加载。Hibernate 通过这种延迟加载来降低系统的内存开销,从而保证 Hibernate 的运行性能。
深入理解hibernate懒加载技术,正确使用懒加载
Hibernate延迟加载介绍.doc
Hibernate在查询某个对象时,立即查询与之关联的对象: 1、当select的语句数目太多,需要频繁的访问数据库,会影响查询的性能。 2、在应用程序只需要访问要的对象,而不需要访问与他关联的对象的场景下,加载与之...
主要介绍了Hibernate延迟加载技术,结合实例形式详细分析了Hibernate延迟加载所涉及的各种常用技巧,需要的朋友可以参考下
主要介绍了Hibernate延迟加载原理与实现方法,较为详细的分析了Hibernate延迟加载的概念,原理与相关实现技巧,需要的朋友可以参考下
NULL 博文链接:https://alleni123.iteye.com/blog/1978448
Hibernate的延迟加载