Java EntityManager::getDelegate返回什么?
我正在EJB3/JSF项目中使用JBoss7和默认的HibernateJPA引擎 内容为:“返回EntityManager的底层提供程序对象(如果可用)。” 出于好奇,我尝试了以下代码:Java EntityManager::getDelegate返回什么?,java,jpa,ejb-3.0,Java,Jpa,Ejb 3.0,我正在EJB3/JSF项目中使用JBoss7和默认的HibernateJPA引擎 内容为:“返回EntityManager的底层提供程序对象(如果可用)。” 出于好奇,我尝试了以下代码: @Stateless public class AFacade { @PersistenceContext(unitName="foo") EntityManager em; public List<A> findAll() { l.info("under
@Stateless
public class AFacade {
@PersistenceContext(unitName="foo")
EntityManager em;
public List<A> findAll() {
l.info("underlying entity manager is: "+em.getDelegate().getClass().getSimpleName());
...
}
@无状态
公开课{
@PersistenceContext(unitName=“foo”)
实体管理器;
公共列表是会话实现
我在这里遗漏了什么?JPA只是一个ORM规范;这个规范/API有一些实现,最著名的是Hibernate、EclipseLink和OpenJPA
这意味着EntityManager
只是实现库中一个类的适配器。在您的例子中,它是org.hibernate.internal.SessionImpl
,因为您使用hibernate作为JPA实现-这个类管理您给EntityManager
的代码Hibernate引用()的内容是“此接口(即EntityManager)类似于Hibernate中的会话”。我突然觉得它应该命名为“会话”。只是更新:在Hibernate的较新版本中,“getDelegate()”方法现在返回一个“org.Hibernate.Session”对象。