如何使用CDI生成Hibernate会话?

时间:2013-08-05 18:55:48

标签: hibernate session cdi entitymanager

我有这个Resources类,它生成我的entityManager以及一个hibernate Session:

public class Resources {

    @Produces
    @PersistenceContext
    private EntityManager em;

    @Produces
    public Session produceSession() {
        return em.unwrap(Session.class);
    }
}

当我在我的EJB类中注入EntityManager时,它工作正常,但是使用注入的hibernate Session只是第一次工作。在此之后,它总是关闭。我认为CDI有效,但它只是注入我的依赖,所以我不能使用它。

所以,我决定使用它:

  

entityManager.unwrap(Session.class)

每次我需要一个Hibernate Session。例如:

return criteria.getExecutableCriteria(entityManager.unwrap(Session.class)).list();

我的两个问题是:还有其他办法吗?这是一种正确的方法吗?

希望有人在这帮助我! 谢谢!

1 个答案:

答案 0 :(得分:0)

有一些CDI扩展,其中一些提供了hibernate集成。但实际上,这应该适合你。

但是,JPA 2有一个您可能感兴趣的标准API。