Привет! Я просматривал свойства инициализации базы данных, предоставленные Spring Boot. Меня немного смущают три свойства, которые влияют на инициализацию базы данных. Сначала я перечислю свое понимание:
1) spring.datasource.initialization-mode
- это диск, когда должна выполняться именно инициализация базы данных.
Возможные значения -
- внедренный (по умолчанию) - это указывает на то, что инициализация базы данных должна быть сделано, когда база данных встроена.
- никогда - никогда не инициализировать базу данных
- всегда - всегда инициализировать базу данных
2) spring.jpa.generate-ddl
- это указывает, должна ли база данных инициализироваться, когда JPA used .
Возможные значения -
- false (по умолчанию) - это означает, что инициализация базы данных не должна выполняться, когда JPA используется
- true - это указывает на инициализацию базы данных должно быть сделано, когда используется JPA
Если значение равно true, инициализация базы данных (DDL) будет выполняться с использованием сущностей JPA, аннотированных аннотациями JPA. для выполнения запросов DML data.sql / data - будет использоваться $ {platform}. sql.
3) spring.jpa.hibernate.ddl-auto
- это может дополнительно настраивать или описывать действия, выполняемые в инициализированной базе данных. Возможные значения -
- create-drop (по умолчанию) - база данных будет всегда удаляться и создаваться каждый раз, когда база данных инициализируется
- нет - это не будет предпринимать никаких действий с инициализированной базой данных - обновление - это попытается синхронизировать c созданная база данных с объектами JPA и переопределение созданной структуры БД с определением объектов JPA, включая ограничения. Поэтому, когда JPA используется , spring.jpa.generate-ddl должен переопределить spring.datasource.initialization-mode, если присутствуют оба (хотя в моем случае это не так - пожалуйста, смотрите вопросы)
Теперь Мои вопросы - я запутываюсь в основном, когда все они используются одновременно.
- Когда БД находится в памяти (либо определяется автоматически, либо специально указывается с использованием свойства, связанного с платформой) и используется JPA
- 1) Чтобы решить, должна ли база данных только инициализироваться
spring.datasource.initialization-mode
используется и свойство spring.jpa.generate-ddl
не будет иметь эффекта? В моем случае мы не определили spring.jpa.generate-ddl
. Это фактически означает, что у нас есть spring.jpa.generate-ddl=false
. Тем не менее база данных инициализируется как spring.datasource.initialization-mode=always
. - 2) если у нас есть включенный spring.datasource.initialization-mode = mode, он будет инициализирован, только если БД находится в памяти, даже если присутствует
spring.jpa.generate-ddl=true
? - 3) Если
spring.datasource.initialization-mode=always
или spring.datasource.initialization-mode=embedded
и spring.jpa.hibernate.ddl-auto=update
, созданная база данных будет обновлена / переопределена с использованием определений сущности JPA? - 4) Если схема. sql или схема - $ {in-memory-platform}. sql отсутствует, и база данных
spring.datasource.initialization-mode=embedded
или spring.datasource.initialization-mode=always
будет создана с использованием определений сущностей JPA?
- Когда DB имеет значение Не в памяти (либо определяется автоматически, либо специально указывается с помощью свойства, связанного с платформой), а JPA используется
-1), что будет иметь приоритет spring.jpa.generate-ddl
ИЛИ spring.datasource.initialization-mode
, например, когда spring.jpa.generate-ddl=false
и spring.datasource.initialization-mode=always
ИЛИ когда spring.jpa.generate-ddl=true
и spring.datasource.initialization-mode=never
, который имеет приоритет, чтобы решить, следует ли инициализировать базу данных? -2) если отсутствует схема. sql или "scehama - $ {platform}. sql", будет ли выполнена инициализация базы данных с использованием определений сущностей JPA?
- Когда БД находится в памяти (либо автоматически обнаружено или специально указано с использованием свойства, связанного с платформой), а JPA - это не использованная
-1) схема. sql или схема - $ {platform}. sql must присутствовать ? так, чтобы при его инициализации создавалась база данных, если она включена? -2) spring.datasource.initialization-mode
свойство будет использоваться для определения необходимости инициализации?
- Когда DB не находится в памяти (либо определяется автоматически, либо специально указывается с использованием свойства, связанного с платформой), а JPA - это , а не используется
-1) схема. sql или схема - $ {платформа}. sql должно присутствовать ? Так, чтобы при его инициализации создавалась дБ при * инициализации? 1082 *