【发布时间】:2014-07-12 07:15:13
【问题描述】:
这是大多数 DAO 中使用的典型设置:
@Transactional
@Repository
public class DAO {
@Autowired
SessionFactory sessionFactory;
public void save(Entity o) {
sessionFactory.getCurrentSession().save(o);
}
public Entity load(int id) {
return (Entity)sessionFactory.getCurrentSession().get(Entity.class, id);
}
}
我只看到 getCurrentSession() 被调用,没有看到 openSession 或 close。
所以当我从load 返回实体时,它不在会话中,无法加载惰性集合。同样,保存似乎总是刷新!
Spring 中的 @Transactional 注释本身是否具有打开和关闭会话和事务的魔力?
【问题讨论】:
-
@ShadowRay 嘿,谢谢。该链接很好,但与
@Transactional无关。您是否能够描述当您连接 sessionFactory,然后调用 DAO 的方法时会发生什么?
标签: java database spring hibernate