Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Создание схемы базы данных

Persistence provider может быть настроен на автоматическое создание таблиц базы данных, загрузку данных в таблицы и удаление таблиц во время развёртывания приложения с использованием стандартных свойств в дескрипторе развёртывания приложения. Эти задачи обычно используются на этапе разработки, но не для рабочей базы данных.

Ниже приведён пример дескриптора развёртывания persistence.xml, который предписывает persistence provider-у удалить все артефакты, создать новые и загрузить данные из предоставленного сценария при развёртывании приложения:


<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
 http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="examplePU" transaction-type="JTA">
    <jta-data-source>java:global/ExampleDataSource</jta-data-source>
    <properties>
        <property name="javax.persistence.schema-generation.database.action"
                  value="drop-and-create"/>
        <property name="javax.persistence.schema-generation.create-source"
                  value="script"/>
        <property name="javax.persistence.schema-generation.create-script-source"
                  value="META-INF/sql/create.sql" />
        <property name="javax.persistence.sql-load-script-source"
                  value="META-INF/sql/data.sql" />
        <property name="javax.persistence.schema-generation.drop-source"
                  value="script" />
        <property name="javax.persistence.schema-generation.drop-script-source"
                  value="META-INF/sql/drop.sql" />
    </properties>
  </persistence-unit>
</persistence>

Настройка приложения для создания или удаления таблиц базы данных

Свойство javax.persistence.schema-generation.database.action используется для указания действия, выполняемого persistence provider-ом при развёртывании приложения. Если свойство не установлено, persistence provider не будет создавать или удалять артефакты базы данных.

Таблица 40-3 Действия по созданию схемы

Значение настройки

Описание

none

Создание и удаление схемы не производится.

create

Persistence provider создаст артефакты базы данных при развёртывании приложения. Артефакты останутся неизменными после повторного развёртывания приложения.

drop-and-create

Все артефакты в базе данных будут удалены, и persistence provider создаст артефакты базы данных при развёртывании.

drop

Все артефакты в базе данных будут удалены при развёртывании приложения.

В этом примере persistence provider удалит все оставшиеся артефакты базы данных, а затем создаст артефакты при развёртывании приложения:

<property name="javax.persistence.schema-generation.database.action"
           value="drop-and-create"/>

По умолчанию объектно-реляционные метаданные в юните персистентности используются для создания артефактов базы данных. Вы также можете предоставить сценарии, используемые provider-ом для создания и удаления артефактов базы данных. Свойства javax.persistence.schema-generation.create-source и javax.persistence.schema-generation.drop-source определяют, как persistence provider будет создавать или удалять артефакты базы данных.

Таблица 40-4. Настройки для создания и удаления свойств источника

Значение настройки

Описание

metadata

Используйте объектно-реляционные метаданные в приложении для создания или удаления артефактов базы данных.

script

Укажите скрипт для создания или удаления артефактов базы данных.

metadata-then-script

Используйте комбинацию объектно-реляционных метаданных, а затем предоставленный сценарий для создания или удаления артефактов базы данных.

script-then-metadata

Используйте комбинацию предоставленного сценария, а затем метаданные объектно-реляционных метаданных для создания и удаления артефактов базы данных.

В этом примере persistence provider будет использовать сценарий, упакованный в приложении, для создания артефактов базы данных:

<property name="javax.persistence.schema-generation.create-source"
           value="script"/>

Если вы указываете скрипт в create-source или drop-source, укажите местоположение скрипта, используя свойства javax.persistence.schema-generation.create-script -source или javax.persistence.schema-generation.drop-script-source. Расположение скрипта относительно корня юнита персистентности:

<property name="javax.persistence.schema-generation.create-script-source"
           value="META-INF/sql/create.sql" />

В приведённом выше примере для create-script-source задан файл SQL с именем create.sql в каталоге META-INF/sql относительно корня юнита персистентности.

Загрузка данных с использованием сценариев SQL

Если вы хотите заполнить таблицы базы данных данными до загрузки приложения, укажите расположение сценария загрузки в свойстве javax.persistence.sql-load-script-source. Местоположение, указанное в этом свойстве, указывает относительный путь от юнита персистентности.

В этом примере сценарий загрузки представляет собой файл data.sql в каталоге META-INF/sql относительно корня юнита персистентности:

<property name="javax.persistence.sql-load-script-source"
          value="META-INF/sql/data.sql" />

Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)