Eclipse中的JPA Project和EJB Project有什么区别?

时间:2011-05-05 08:08:50

标签: java eclipse jpa java-ee ejb

何时使用?

当我需要JSF + Stateless Bean + JPA Entity应用程序时,我需要在EAR项目中集成EJB Project和Dynamic Web Project吗?

3 个答案:

答案 0 :(得分:14)

EJB项目是一个专注于Enterprise Java Bean开发的项目。通常,EJB依赖于Entitity Beans来实现持久性,这是使用JPA技术实现的(将JPA视为EJB的依赖项)。

您可以选择独立于EJB创建JPA项目的原因是,有些人可能不想使用(或不需要)EJB,但仍然需要使用ORM框架,例如JPA。这种情况可以是例如将直接使用JPA用于持久性(没有EJB)的web项目(即JSF)。

要点是尽管EJB 3使用JPA进行持久化,但您不必在项目中使用EJB(除非您需要这样做)以便从ORA框架(如JPA)中受益。

现在,要在eclipse中的EJB项目上启用JPA,请右键单击该项目,转到“Project Facets”选项并选择JPA facet。通过这样做,eclipse将添加所需的库,创建必要的工件(persistence.xml)并在IDE上启用JPA相关工具。

答案 1 :(得分:5)

Java Persistence API(有时称为JPA)是一种Java编程语言规范,它描述了使用Java Platform,Standard Edition和Java Platform,Enterprise Edition在应用程序中管理关系数据。

Java Persistence API起源于JSR 220专家组的工作。 JPA 2.0是JSR 317专家组的工作。

在此背景下的持久性包括三个方面:

the API itself, defined in the javax.persistence package
the Java Persistence Query Language (JPQL)
object/relational metadata

Enterprise JavaBeans(EJB)是由Sun Microsystems开发的Java API,它定义了多层客户端/服务器系统的组件体系结构。

EJB系统允许开发人员专注于模型的实际业务架构,而不必担心连接所有工作部件所需的无限量的编程和编码。此任务由EJB服务器供应商负责。开发人员只需设计(或购买)所需的EJB组件并将其排列在服务器上即可。

因为EJB系统是用Java编写的,所以它们与平台无关。作为面向对象,它们可以在很少或没有重新编译和配置的情况下实现到现有系统中。

答案 2 :(得分:1)

这取决于您使用的Java EE版本。在Java EE 6中,我们可以在WAR文件中拥有EJB。所以一个动态网络项目就足够了。

如果您正在使用Java EE 1.5,那么您需要为JSF和Stateless bean创建一个Dynamic Web项目,您需要拥有一个EJB项目,并且还需要一个企业项目将WAR和JAR捆绑到一个EAR中。您可以在EJB项目本身中使用与持久性相关的类,而不需要在此处使用JPA项目。

Java EE提供了独立于EJB使用JPA的工具,因此如果您的应用程序不需要EJB但仍想使用JPA,那么您可以使用JPA项目。