Ger*_*llo 4 tomcat jpa jta jdbc java-ee
我正在使用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
Run Code Online (Sandbox Code Playgroud)
但是现在我正在Java EE上学习JPA。
在“ Pro JPA 2 Mastering the Java trade Persistance API”一书的第3章,“打包”中,您可以阅读:
在Java EE环境中,可以省略persistence.xml文件中Java SE所需的许多属性。在清单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>
Run Code Online (Sandbox Code Playgroud)
清单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>
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何使用我在文章顶部输入的属性来适应Java EE环境中的通用persistence.xml文件以连接到MySQL / JDBC数据库?
给定的示例需要JTA,Java Transaction API。它将事务管理委托给容器。启用JTA后,如果您使用的是@StatelessEJB,则默认情况下,单个方法调用将被计为单个完整事务。这使您无需编写任何tx.begin,tx.commit,tx.rollback等模板即可编写干净的代码。
像JSF,EJB和JPA一样,默认情况下,JTA在像Tomcat和Jetty这样的准JSP / Servlet容器上不可用。像JSF,EJB和JPA一样,您需要在Tomcat上分别安装JTA。
一种替代方法是从JSP / Servlet容器切换到真实的Java EE(Web配置文件)容器,例如Glassfish,JBoss AS和TomEE。它直接提供了有关Java EE的所有内容。请注意,JBoss AS和TomEE在幕后基本上使用了Tomcat的JSP / Servlet引擎。
| 归档时间: |
|
| 查看次数: |
27035 次 |
| 最近记录: |