在Bean托管事务中使用EntityManager unwrap方法

时间:2017-07-10 09:17:43

标签: hibernate jpa java-ee

我正在使用从em.unwrap(..)方法获得的Hibernate Session。我似乎无法找到任何关于是否必须在使用后释放它的信息。事务由bean管理,实体管理器使用@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?

1 个答案:

答案 0 :(得分:0)

不,您请求了一个底层对象,关闭该对象的责任在于EntityManager。

使用解包的Hibernate时,

AutoCloseable会话是合理的。