Hibernate Session和EntityManager之间的区别

JRR*_*JRR 25 java hibernate jpa

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

Emi*_*uch 26

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

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


Sar*_*ark 8

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

Session session = entityManager.unwrap(Session.class);
Run Code Online (Sandbox Code Playgroud)