Я кратко смотрел на JPA недавно, и я задавался вопросом, что соглашение с миграциями схемы базы данных и пребыванием выровненного с классами, которые Вы создали.
Есть ли поддержка в JPA для этого материала? Утилиты? Методы наиболее успешной практики?
Удачи!
Если вы устанавливаете GeneratedDL
для Hibernate (если оно является базовой реализацией), то он генерирует схему базы данных в соответствии с вашим текущим диалеком. Поэтому после изменения диалекта он автоматически генерирует базу данных.
Другие провайдеры JPA могут иметь разные свойства для этого.
Короткий ответ - № .
Если вы измените бобы, то вам придется мигрировать существующую схему вручную. Так что для рельсов стиль базы данных миграции вам придется искать в другом месте.
Вы можете генерировать начальный DDL от ваших бобов Java. Пример ниже иллюстрирует создание схемы с помощью ECLIPSELINK версии 2.0:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">
<persistence-unit name="JPATestPU" transaction-type="RESOURCE_LOCAL">
<provider>
org.eclipse.persistence.jpa.PersistenceProvider
</provider>
<class>org.randompage.MyEntity</class>
<properties>
<property name="javax.persistence.jdbc.user" value="johndoe"/>
<property name="javax.persistence.jdbc.password" value="secret"/>
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:~/.h2/testdb;FILE_LOCK=NO"/>
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
<property name="eclipselink.logging.level" value="INFO"/>
</properties>
</persistence-unit>
</persistence>
элемент ключей здесь -
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
, это говорит ECLIPSELink, чтобы отбросить существующие таблицы и генерировать новые один раз от отображения JPA. Эта процедура очень поставщика, так и для других продавцов JPA (Hibernate, OpenJPA ...) Вам придется проконсультироваться с их конкретной документацией.
Я не буду полагаться на поставщиков JPA для обновления схемы базы данных. Посмотрите Liquibase на один из хороших подходов.