我是Java EE和JPA世界的新手,需要帮助理解persistence.xml文件内容。我使用Eclipse IDE,TomEE应用程序服务器,OpenJPA作为持久性提供程序,MySQL作为数据库。
现在,假设我有一些带有注释实体的Java EE项目,名为A,B和C,我想将这些实体映射到名为TestDB的MySQL数据库。我想根据实体注释在部署期间创建数据库。在MySQL服务器上,我以“root”用户身份登录,密码为“123”。
persistence.xml中的哪些属性对应于哪些Java EE环境工件(代表持久性单元,指定数据库名称的位置......)?这是正确的persistence.xml文件内容,对于上述情况:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="Test" transaction-type="JTA">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<properties>
<property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/TestDB" />
<property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver" />
<property name="openjpa.ConnectionUserName" value="root" />
<property name="openjpa.ConnectionPassword" value="123" />
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)" />
<property name="openjpa.jdbc.DBDictionary" value="mysql" />
<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO" />
</properties>
</persistence-unit>
</persistence>
哪些其他设置对JPA正常工作很重要? (感谢任何帮助)
答案 0 :(得分:0)
以上persistence.xml
缺少数据源标记:
<jta-data-source>TestDB-jta-DS</jta-data-source>
然后,对于Apache TomEE,可以在[tomee]/conf/tomee.xml
配置文件中定义数据源。因此,上面的persistence.xml的正确数据源定义是:
<Resource id="TestDB-jta-DS" type="DataSource">
JdbcDriver com.mysql.jdbc.Driver
JdbcUrl jdbc:mysql://127.0.0.1:3306/TestDB
UserName root
Password 123
JtaManaged true
DefaultAutoCommit false
</Resource>