hibernate - 在 bean 管理的事务中使用 EntityManager unwrap 方法

标签 hibernate jpa jakarta-ee

我正在使用从 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/

相关文章:

内存不足时的 Java EE 堆转储

java - 在 Hibernate 中使用 native SQL 查询将结果集放入 DTO

java - 无法通过反射 hibernate 获取字段值

java - JPA - 映射具有相同实体的列

java - 使用 JPA/PLay 从 Join 查询迭代 List<Object>

java - 为信用卡生成随机数

java - com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException : No operations allowed after connection closed

Hibernate - Spring 项目部署更新

hibernate - JBoss 7 Spring JPA + Hibernate 应用程序 : no transaction is in progress

java - 如何使用java将当前日期和时间保存到数据库?