Это часть другого ответа, который отвечает на часть MySQL. Я добавляю это здесь для дальнейшего использования, пытаясь закрыть этот вопрос.
Итак, с этого момента я предполагаю, что руководство по заказу покупателя работало нормально: был сгенерирован код, выполнен круговой тест с базой данных HSQLDB и т. д.
Теперь разберем два вопроса:
- Как перейти на MySQL?
- Как сгенерировать схему базы данных с помощью hbm2ddl?
Давайте начнем.
Переход на MySQL
Прежде всего, вы должны заменить HSQLDB на MySQL в файле pom.xml
. Удали это:
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>1.8.0.7</version>
<scope>test</scope>
</dependency>
И добавьте это:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
<scope>test</scope>
</dependency>
Затем отредактируйте src/test/resources/persistence.properties
. Замените это:
hibernate.dialect=org.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class=org.hsqldb.jdbcDriver
hibernate.connection.username=sa
hibernate.connection.password=
hibernate.connection.url=jdbc:hsqldb:target/test-database/database
hibernate.hbm2ddl.auto=create-drop
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
hibernate.jdbc.batch_size=0
С этим:
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.username=...
hibernate.connection.password=...
hibernate.connection.url=jdbc:mysql://localhost/hj3
hibernate.hbm2ddl.auto=create-drop
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
hibernate.jdbc.batch_size=0
Лично у меня сейчас нет под рукой базы данных MySQL, поэтому я не могу протестировать туда-обратно. Поэтому я закомментирую
<!--roundtripTestClassName>RoundtripTest</roundtripTestClassName-->
in pom.xml
.
Если у вас есть база данных, просто настройте правильный URL/имя пользователя/пароль в упомянутом файле persistence.properties
.
На этом этапе ваш проект Maven переконфигурирован для использования MySQL. Если циклический тест не закомментирован и база данных доступна, круговой тест должен выполняться с БД, т. е. создать схему, импортировать образец XML, прочитать его и сравнить альфа и омега.
Итак, у нас есть руководство по MySQL, и мы можем двигаться дальше.
Создание схемы базы данных
Это была сложная часть, чтобы понять.
Чтобы создать схему базы данных в файле, вы должны использовать инструмент hbm2ddl
. Для этого есть плагины Maven, в случае с Hibernate 3 казалось, что плагин Codehaus является ведущим. Наконец, я выяснил следующую конфигурацию. Вы должны добавить следующий плагин к вашему pom.xml
(project/build/plugins
):
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>3.0</version>
<executions>
<execution>
<id>generate-schema</id>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<configuration>
<hibernatetool>
<classpath>
<path location="${project.build.directory}/classes" />
</classpath>
<jpaconfiguration persistenceunit="org.jvnet.hyperjaxb3.ejb.tests.pocustomized" propertyfile="src/test/resources/persistence.properties"/>
<hbm2ddl export="false" create="true" update="false" format="true" outputfilename="schema.ddl" />
</hibernatetool>
</configuration>
<dependencies>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.6.5.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
</dependency>
</dependencies>
</plugin>
Несколько вещей важны:
- Hyperjaxb3 генерирует аннотации JPA, поэтому вы должны использовать
jpaconfiguration
.
- Поэтому
hibernate3-maven-plugin
должен быть выполнен на этапе компиляции (вам нужны классы для чтения аннотаций, поэтому они должны быть скомпилированы в этот момент).
- Вы должны включить скомпилированные классы (
${project.build.directory}/classes
) в путь к классам hibernatetool, чтобы он мог обнаруживать классы и читать аннотации.
- Вы должны сообщить hibernatetool, где вы найдете свои свойства Hibernate (
propertyfile="src/test/resources/persistence.properties"
).
- Наконец, вы должны сообщить ему, какую единицу персистентности вы хотите обработать (
persistenceunit="org.jvnet.hyperjaxb3.ejb.tests.pocustomized"
). Взгляните на target/generated-sources/xjc/META-INF/persistence.xml
.
- Наконец, добавьте все необходимые зависимости.
Наконец, вы пришли к конфигурации, которую я разместил выше. На этом этапе сборка также должна сгенерировать схему базы данных в target/sql/hibernate3/schema.ddl
.
person
lexicore
schedule
13.10.2014