`
guomingzhang2008
  • 浏览: 157438 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate延迟加载

阅读更多
解决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层外访问延迟加载的数据会抛异常。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics