我正在使用JSF、PrimeFaces、JPA开发一个动态web项目(Java ),并在Tomcat 7上运行。
现在我正在开发该软件的JPA部分。过去,当我在Java中开发一些小东西(作为练习)时,我经常使用以下数据库属性:
jdbc.drivers=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=password
但是现在我正在学习Java上的JPA。
在"Pro JPA 2掌握Java贸易持续API“一书中,第3章”打包“一段,您可以阅读:
在Java环境中,可以省略Java的persistence.xml文件中所需的许多属性。在清单3-32中,您可以看到清单2-11中的persistence.xml文件被转换为Java应用程序的一部分进行部署。现在,我们声明实体管理器应该使用数据源名称“JDBC /EmployeeDS”,而不是用于创建连接的jdbc属性。如果数据源被定义为在应用程序命名空间中可用,而不是本地组件命名上下文,那么我们可以使用数据源名称“java:app/jdbc/EmployeeDS”。事务类型属性也已被删除,以允许持久化单元默认为JTA。应用程序服务器将自动查找实体类,因此即使是类列表也已被删除。此示例表示理想的最低Java配置。因为使用此持久性单元的业务逻辑是在无状态会话bean中实现的,所以persistence.xml文件通常位于相应EJB的META目录中。
清单3-32。在Java 中定义持久性单元
<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环境中的通用persistence.xml文件,使用我在文章顶部输入的属性连接到MySQL/JDBC数据库?
发布于 2013-06-28 16:15:45
给定的示例需要JTA、Java事务API。它将把事务管理委托给容器。启用JTA后,如果您使用的是JTA,那么默认情况下,一个方法调用就算作一个完整的事务。这允许您编写干净的代码,而不需要任何tx.begin、tx.commit、tx.rollback等模板。
与JSF、EJB和JPA一样,JTA默认不在Tomcat和Jetty这样的简单JSP/Servlet容器上使用。与JSF、EJB和JPA一样,您需要在Tomcat上分别安装JTA。
另一种选择是从JSP/Servlet容器切换到真正的Java (web )容器,例如Glassfish、JBoss as和TomEE。它直接提供了与Java有关的所有内容。请注意,JBoss AS和TomEE基本上使用Tomcat的JSP/Servlet引擎。
发布于 2022-01-19 17:08:11
在WEB/ persistence.xml /META文件夹中创建。网络-INF将已经存在。但是我们需要将类和META文件夹打包。
https://stackoverflow.com/questions/17347852
复制相似问题