1

当使用 JPA 的 Hibernate 实现并使用 Spring 数据源管理这些资源时,EntityManager 会话何时关闭?例如,我有下面的基本模式,其中 Spring 服务层调用 Spring DAO 层(@repository)。DAO 存储库自动装配 PersistentContext 的 EntityManager 并执行 DB 操作。我的问题是,在 getData Service 方法完成后,EntityManager 会话何时关闭?我在问这个问题,因为我试图查看休眠 L1 缓存将存在多长时间,并且因为它直接与 EntityManager 会话相关联......

@Service
public class TestService{
@Autowired
private dataDAO;
@Transaction
public List getData(Long id){
    return dataDAO.getDate(id);
}
}
4

1 回答 1

3

默认情况下,spring 在事务结束时释放会话。在这种情况下,会话将在getData方法结束时释放。一级缓存 (L1) 绑定到实际事务,并在事务终止后立即清除。

于 2013-07-09T20:38:34.613 回答