Hibernate Session和EntityManager之间的区别

时间:2013-05-21 12:49:43

标签: java hibernate jpa

Hibernate Session类和EntityManager类有什么区别?我知道EntityManager实现了Java Persistence API,但我不确定它与Session的关系。它们有关系吗?

2 个答案:

答案 0 :(得分:22)

Session是一个特定于hibernate的API,EntityManager是JPA的标准化API。您可以将EntityManager视为包装Session的适配器类(您甚至可以通过Session函数从EntityManager对象获取getDelegate()对象

这与其他Java API没有什么不同(例如,JDBC是标准API,每个供应商都通过实现标准功能的驱动程序使其产品适应API。)

答案 1 :(得分:6)

SessionFactory和Session是特定于hibernate的。 EntityManager在引擎盖下调用hibernate会话。如果您需要EntityManager中没有的某些特定功能,可以通过调用以下方式获取会话:

Session session = entityManager.unwrap(Session.class);