4

我正在使用 JSF、PrimeFaces、JPA 开发一个动态 Web 项目 (Java EE),并在 Tomcat 7 上运行。项目开发基于http://www.simtay.com/simple-crud-web-application-with- jsf-2-1-primefaces-3-5-maven-and-jpa/
现在我正在开发软件的 JPA 部分。过去,当我在 Java SE 中开发一些小东西(作为练习)时,我曾经使用以下数据库属性:

jdbc.drivers=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=password

但现在我正在学习 Java EE 上的 JPA。

在“Pro JPA 2 Mastering the Java trade Persistance API”一书的第 3 章“打包”段落中,您可以阅读:

在 Java EE 环境中,可以省略 Java SE 的 persistence.xml 文件中所需的许多属性。在清单 3-32 中,您会看到清单 2-11 中的 persistence.xml 文件已转换为作为 Java EE 应用程序的一部分进行部署。我们现在声明实体管理器应该使用数据源名称“jdbc/EmployeeDS”,而不是用于创建连接的 JDBC 属性。如果数据源被定义为在应用程序命名空间而不是本地组件命名上下文中可用,那么我们可以改为使用数据源名称“java:app/jdbc/EmployeeDS”。还删除了事务类型属性以允许持久性单元默认为 JTA。应用服务器会自动查找实体类,所以连类列表都被删除了。此示例代表理想的最低 Java EE 配置。因为使用此持久性单元的业务逻辑是在无状态会话 bean 中实现的,所以 persistence.xml 文件通常位于相应 EJB JAR 的 META-INF 目录中。

清单 3-32。在 Java EE 中定义持久性单元

<persistence>
    <persistence-unit name="EmployeeService">
        <jta-data-source>jdbc/EmployeeDS</jta-data-source>
    </persistence-unit>
</persistence>

清单 2-11。persistence.xml 文件中的元素

<persistence>
    <persistence-unit name="EmployeeService" transaction-type="RESOURCE_LOCAL">
        <class>examples.model.Employee</class>
        <properties>
            <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527 EmpServDB;create=true"/>
            <property name="javax.persistence.jdbc.user" value="APP"/>
            <property name="javax.persistence.jdbc.password" value="APP"/>
        </properties>
    </persistence-unit>
</persistence>

我的问题是:如何使用我在帖子顶部输入的属性来调整 Java EE 环境中的通用 persistence.xml 文件以连接到 MySQL/JDBC 数据库?

4

2 回答 2

5

给定的示例需要 JTA、Java 事务 API。它将事务管理委托给容器。启用 JTA 后,如果您使用的是@StatelessEJB,则默认情况下单个方法调用计为单个完整事务。这允许您编写干净的代码,而无需任何 tx.begin、tx.commit、tx.rollback 等样板。

与 JSF、EJB 和 JPA 一样,JTA 默认情况下在准系统 JSP/Servlet 容器上不可用,如 Tomcat 和 Jetty。与 JSF、EJB 和 JPA 一样,您需要在 Tomcat 上单独安装 JTA。

另一种方法是从 JSP/Servlet 容器切换到真正的 Java EE(Web 配置文件)容器,例如 Glassfish、JBoss AS 和 TomEE。它直接提供有关 Java EE 的所有内容。请注意,JBoss AS 和 TomEE 基本上使用 Tomcat 的 JSP/Servlet 引擎。

于 2013-06-28T16:15:45.063 回答
-1

在 WEB-INF/classes/META-INF 文件夹中创建 persistence.xml。WEB-INF 已经存在。但是我们需要创建类和 META-INF 文件夹。

在此处输入图像描述

于 2022-01-19T17:08:11.307 回答