我正在使用从 em.unwrap(..)
方法获得的 Hibernate Session。我似乎找不到任何关于我是否必须在使用后释放它的信息。事务由 bean 管理,实体管理器使用 @Inject
注入(inject)。
boolean transactionSuccess = false;
try {
utx.begin();
final Session session = em.unwrap(Session.class);
transactionSuccess = true;
} finally {
commitOrRollback(transactionSuccess);
}
我假设实体管理器实例由容器管理。由于 Session 或多或少是底层实现,我是否必须发布它?毕竟它是 AutoCloseable
。
我发现的唯一相关信息是这个(但它似乎是普通的 JPA): After using the unwrap method on entitymanager to get the native hibernate session do I have to close both?
最佳答案
不,您请求了一个底层对象,关闭该对象的责任在于 EntityManager。
当您使用未包装的 Hibernate 时,自动关闭 session 是合理的。
关于hibernate - 在 bean 管理的事务中使用 EntityManager unwrap 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45008154/