2012-01-27 55 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。