4

我在 EJB3 / JSF 项目中使用带有默认 Hibernate JPA 引擎的 JBoss 7。

EntityManager::getDelegate 上的javadoc读取:“返回 EntityManager 的基础提供程序对象,如果可用。”。

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

@Stateless
public class AFacade {
    @PersistenceContext(unitName="foo")
    EntityManager em;

    public List<A> findAll() {
         l.info("underlying entity manager is: "+em.getDelegate().getClass().getSimpleName());
         ...
    }

然而,输出将类名指示为:org.hibernate.internal.SessionImpl,根据休眠文档,它是一个会话实现。

我在这里想念什么?

4

1 回答 1

7

JPA 只是 ORM 的一个规范;该规范/API 有一些实现,最著名的是 Hibernate、EclipseLink、OpenJPA。

这意味着它EntityManager只是实现库中类的适配器。在您的情况下,org.hibernate.internal.SessionImpl因为您使用 Hibernate 作为 JPA 实现 -这是管理您提供给EntityManager.

于 2012-11-17T20:35:54.670 回答