gpt4 book ai didi

jakarta-ee - 如何调整 persistence.xml 文件以将 JPA 连接到 Java EE 环境中的 JDBC/MySQL 数据库(Tomcat + JSF)

转载 作者:行者123 更新时间:2023-11-28 21:49:16 24 4
gpt4 key购买 nike

我正在使用 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

但现在我正在学习 JPA on Java EE。

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

In the Java EE environment, many properties required in the persistence.xml file for Java SE can be omitted. In Listing 3-32, you see the persistence.xml file from Listing 2-11 converted for deployment as part of a Java EE application. Instead of JDBC properties for creating a connection, we now declare that the entity manager should use the data source name “jdbc/EmployeeDS”. If the data source was defined to be available in the application namespace instead of the local component naming context then we might instead use the data source name of “java:app/jdbc/EmployeeDS”. The transaction- type attribute has also been removed to allow the persistence unit to default to JTA. The application server will automatically find entity classes, so even the list of classes has been removed. This example represents the ideal minimum Java EE configuration. Because the business logic that uses this persistence unit is implemented in a stateless session bean, the persistence.xml file would typically be located in the META-INF directory of the corresponding EJB JAR.

list 3-32。在 Java EE 中定义持久化单元

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

list 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 数据库?

最佳答案

给定的示例需要 JTA,Java Transaction API。它将事务管理委托(delegate)给容器。启用 JTA 后,如果您使用的是 @Stateless EJB,则默认情况下单个方法调用将计为单个完整事务。这允许您编写干净的代码,而无需任何 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 引擎。

关于jakarta-ee - 如何调整 persistence.xml 文件以将 JPA 连接到 Java EE 环境中的 JDBC/MySQL 数据库(Tomcat + JSF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17347852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com