Сведения о содержимом файла JPA persistence.xml

Я новичок в мире Java EE и JPA, и мне нужна помощь в понимании содержимого файла persistence.xml. Я работаю с Eclipse IDE, сервером приложений TomEE, OpenJPA в качестве поставщика постоянства и MySQL в качестве базы данных.

Теперь предположим, что у меня есть проект Java EE с аннотированными объектами с именами A, B и C, и я хотел бы сопоставить эти объекты с базой данных MySQL с именем TestDB. Я хотел бы, чтобы база данных создавалась во время развертывания в соответствии с аннотациями сущностей. На сервере 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? (Ценим любую помощь)


person Vladimir    schedule 26.09.2013    source источник
comment
Этот вопрос немного широк: какие проблемы у вас возникли, когда вы попробовали это persistence.xml?   -  person Beryllium    schedule 26.09.2013
comment
Я написал код выше, следуя некоторой документации по настройке файла persistence.xml, но это не значит, что он правильный. Я не уверен в нескольких вещах: что представляет собой единица персистентности? Как установить свойства persistence.xml, чтобы была сгенерирована схема базы данных?   -  person Vladimir    schedule 26.09.2013
comment
На самом деле у меня есть пример JEE (который должен быть действительным), но я не могу его запустить. Это часть сообщения журнала, которое я получаю при попытке запустить файл сборки ant: [код] [java] ПРЕДУПРЕЖДЕНИЕ: RequestFailed{server=127.0.0.1:8080/tomee/ejb} JNDI_LOOKUPnull:/InitBeanRemote {error=Не удается открыть входной поток на сервер: } [java] Исключение в потоке main org.apache.openejb.client. ClientRuntimeException: Неверный ответ сервера: -1[/code]   -  person Vladimir    schedule 26.09.2013


Ответы (1)


Над 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>
person Vladimir    schedule 19.12.2013