0

我是 Java EE 和 JPA 世界的新手,需要帮助来理解 persistence.xml 文件内容。我使用 Eclipse IDE、TomEE 应用程序服务器、OpenJPA 作为持久性提供程序,以及 MySQL 作为数据库。

现在,假设我有一些带有名为 A、B 和 C 的注释实体的 Java EE 项目,我想将这些实体映射到名为 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 正常工作很重要?(感谢任何帮助)

4

1 回答 1

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>
于 2013-12-19T21:44:05.960 回答