Java 冬眠->;获取惰性对象
嗨,我有一个问题,我不知道,如果可能的话。我有一把刀。我有一个实体,我定义了经典的OneToMany assocJava 冬眠->;获取惰性对象,java,hibernate,session,orm,Java,Hibernate,Session,Orm,嗨,我有一个问题,我不知道,如果可能的话。我有一把刀。我有一个实体,我定义了经典的OneToMany assoc @OneToMany public Set<InterviewEntity> getCreatedInterviews() { return createdInterviews; } 我只想这样: @Override public T findById(long id) { Session session = sess
@OneToMany
public Set<InterviewEntity> getCreatedInterviews() {
return createdInterviews;
}
我只想这样:
@Override
public T findById(long id) {
Session session = sessionFactory.openSession();
T entity = (T) session.get(thisClass, id);
session.close();
return entity;
}
EmployeeEntity resultEmployee = employeeDao.findById(employeeEntity.getEmployeeId());
resultEmployee.getCreatedInterviews();
我可以使用Hibernate.initialize()在具体的Dao类中@Override方法findById,但我认为这不太实际。有人知道吗?您的代码在实体检索后立即关闭
会话
,因此您的ResultTemployee.getCreatedInterviews()
将无法工作,因为没有打开的会话
我认为您的问题不是使用延迟加载,而是耦合会话管理代码和DAO代码
如果正确使用HibernateLazy特性,它会很好。尝试在业务级别而不是DAO级别解耦会话管理。我的意思是,当您从视图调用某些业务逻辑时:
- 然后启动/打开会话
- 启动/打开事务
- 执行您想要的操作:检索实体、获取关联、更改数据
- 提交/回滚事务
- 刷新和关闭会话