2010-11-21 83 views
1

我正在使用Hibernate將對象映射到實體,並且我已經開始使用實體管理器。這可能是一個愚蠢的問題,但究竟是使用實體管理器的原因是什麼?以前我會使用HibernateSessionFactory來獲取會話,然後使用該會話來拉取/推送數據。爲什麼使用實體管理器?

回答

4

因爲EntityManager是標準的一部分 - JPA。從理論上講,如果需要,可以切換實現(Hibernate,EclipseLink,OpenJPA)。除了所謂的可移植性之外,兩者之間沒有如此大的差異。

Hibernate實現了JPA標準。實際上,EntityManager有一個代表,基於具體的實現。對於Hibernate,代表是Session。如果您致電getDelegate(),它將返回當前的Session

我一直在使用hibernate和JPA(EntityManager),並且很少有需要獲得會話。

1

EntityManager是JPA的概念。 你根本不需要在Hibernate中使用JPA(事實上,如果它是JPA1,我會建議你不要)。

1

您在使用JPA API時使用EntityManager。休眠實現EntityManager內部調用HibernateSessionFactory併爲您管理Hibernate會話。

JPA中的EntityManagers與Hibernate會話的用途基本相同。

相關問題