2011-03-30 55 views
0

我是一個開心的Tomcat用戶,並且希望使用新的Java Persistence API。我有點困惑,我應該從哪裏得到它?JPA如何與EJB相關Java EE 6

我沒有找到關於我的問題的官方文件非常清楚。

  • Java EE 6是EJB容器特有的東西,比如JBoss或Glassfish?
  • 這是否意味着如果您有EE 6容器,它會自動支持JPA?
  • JPA是規範還是API?
  • Hibernate,Kodo還是OpenJPA,DataNucleus,EclipseLink,TopLink都實現了JPA規範?

我問的原因是因爲我不想部署非常大的文件。如果我使用的容器支持/包含JPA API,那麼我寧願不在每個應用程序中部署一個?

我有這個想法在我的腦海裏,Tomcat 7的JAR可能有它嗎?

回答

3

Java EE 6是EJB容器特有的東西,比如JBoss或Glassfish?

Java EE 6是一個規範。關於如何實現這個規範是不可知論的,但通常這是由諸如你提到的兩個應用服務器完成的。

這是否意味着如果您有EE 6容器,它會自動支持JPA?

是的。 JPA是JavaEE v5和v6的一部分。

JPA是規範還是API?

兩者。規範定義了語義,API定義了語法。

Hibernate,Kodo還是OpenJPA,DataNucleus,EclipseLink,TopLink都實現了JPA規範?

是的。不同的appservers附帶不同的JPA實現。

如果我正在使用的容器支持/包含JPA API,那麼我寧願不在每個應用程序中部署一個容器?

這是一般的想法。使用您的應用服務器提供的服務。

我有這個想法在我的腦海裏,Tomcat 7的JAR可能有它嗎?

我對v7並不熟悉,但Tomcat並不是一個完整的JavaEE實現(它提供了JSP,servlet和其他一些東西,比如JNDI),但不是JPA。如果您部署到Tomcat,您的應用程序將需要打包自己的JPA實現。