JPA与EJB的关系如何与Java EE 6相关

时间:2011-03-30 08:55:45

标签: tomcat jpa

我是一个快乐的Tomcat用户,并希望使用新的Java Persistence API。我有点困惑,我应该从哪里得到它?

我没有找到关于我的问题的官方文件。

  • Java EE 6是否特定于EJB容器,例如JBoss或Glassfish?
  • 这是否意味着如果您有EE 6容器,它会自动支持JPA?
  • JPA是规范还是API?
  • Hibernate,Kodo或OpenJPA,DataNucleus,EclipseLink,TopLink是否都是JPA规范的实现?

我问的原因是因为我不想部署非常大的文件。如果我正在使用的容器支持/包含JPA API,那么我宁愿不为每个应用程序部署一个?

我脑子里有这个想法,Tomcat 7的JAR可能有这个想法吗?

2 个答案:

答案 0 :(得分:3)

  

Java EE 6是否特定于EJB容器,例如JBoss或Glassfish?

Java EE 6是一个规范。关于如何实现该规范是不可知的,但通常这是由你提到的两个appserver完成的。

  

这是否意味着如果您有EE 6容器,它会自动支持JPA?

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

  

JPA是规范还是API?

两者。规范定义了语义,API定义了语法。

  

Hibernate,Kodo或OpenJPA,DataNucleus,EclipseLink,TopLink是否都是JPA规范的实现?

是。不同的appservers附带不同的JPA实现。

  

如果我使用的容器支持/包含JPA API,那么我宁愿不为每个应用程序部署一个?

这是一般的想法。使用您的appserver提供的服务。

  

我脑子里有这个想法,Tomcat 7的JAR可能有这个想法吗?

我并不熟悉v7,但Tomcat不是一个完整的JavaEE实现(它提供了JSP,servlet和其他一些东西,比如JNDI),但不是JPA。如果部署到Tomcat,您的应用程序将需要打包自己的JPA实现。

答案 1 :(得分:0)

你绝对可以在Tomcat中使用JPA。目前我们在Tomcat中使用OPENJPA将JPA增强器添加到构建中。在Tomcat中设置Hibernate JPA也有很多例子(例如http://dev.imanol.me/post/32735636704/tomcat-jpa-hibernate-and-mysql)。