Java EntityManager::getDelegate返回什么?

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

我正在EJB3/JSF项目中使用JBoss7和默认的HibernateJPA引擎

内容为:“返回EntityManager的底层提供程序对象(如果可用)。”

出于好奇,我尝试了以下代码:

@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”对象。