Поддержка миграций схемы с JPA?

Я кратко смотрел на JPA недавно, и я задавался вопросом, что соглашение с миграциями схемы базы данных и пребыванием выровненного с классами, которые Вы создали.

Есть ли поддержка в JPA для этого материала? Утилиты? Методы наиболее успешной практики?

Удачи!

25
задан Martijn Pieters 17 November 2017 в 08:48
поделиться

3 ответа

Если вы устанавливаете GeneratedDL для Hibernate (если оно является базовой реализацией), то он генерирует схему базы данных в соответствии с вашим текущим диалеком. Поэтому после изменения диалекта он автоматически генерирует базу данных.

Другие провайдеры JPA могут иметь разные свойства для этого.

0
ответ дан 28 November 2019 в 21:55
поделиться

Короткий ответ - .

Если вы измените бобы, то вам придется мигрировать существующую схему вручную. Так что для рельсов стиль базы данных миграции вам придется искать в другом месте.

Вы можете генерировать начальный 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 ...) Вам придется проконсультироваться с их конкретной документацией.

7
ответ дан 28 November 2019 в 21:55
поделиться

Я не буду полагаться на поставщиков JPA для обновления схемы базы данных. Посмотрите Liquibase на один из хороших подходов.

11
ответ дан 28 November 2019 в 21:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: