2012-01-27 22 views
1

我知道JPA只是一个标准,使用它需要一个实现,比如Hibernate3.2,我的问题是:EJB3是否带有JPA的实现,或者我还需要实现(如hibernate除EJB3以外)吗? 如果你可以点我有这方面的有用的教程将是巨大的:)如果使用EJB3 JPA,我需要休眠吗?

感谢

+2

请注意,在EJB 3.1中,EJB3 JPA没有这样的东西。 JPA现在是一个完全独立的规范。 – 2012-01-29 17:44:32

回答

3

如果容器支持JPA,它给你一个API(EntityManager等),你不关心什么实现它。所以不,你不必使用Hibernate。一些容器将使用下面的Hibernate,其他EclipseLink等。但从你的角度来看,你正在使用的API只是

+1

除非您使用供应商特定的扩展。还有一些非常有用。 – 2012-01-27 23:39:53

1

如果您正在使用Hibernate功能,如@Filter那么您应该使用Hibernate作为您的JPA提供程序。一些应用程序服务器(如JBoss)使用Hibernate作为其JPA提供程序。

1

这取决于Java EE容器的具体实现。 JPA更像是一个接口,规范,而Hibernate是一个自定义的JPA实现。

Hibernate与JBoss搭配使用,Eclipselink是Glassfish附带的另一个JPA实现的例子。但是如果你愿意,你仍然可以使用Hibernate + Glassfish。