hibernate延迟加载

本文详细介绍了在DAO层通过引入枚举参数来控制是否获取延迟加载的List集合,以此实现延迟加载数据的访问。重点阐述了在DAO层外访问延迟加载数据时面临的问题及其解决方案,包括关闭session后无法获取延迟加载数据的异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决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层外访问延迟加载的数据会抛异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值