leandromoraesrj / sincad-backend

PROJETO BASE DE EXEMPLO USANDO AS MELHORES PRATICAS DE DESENVOLVIMENTO
0 stars 0 forks source link

Mapeamento Hibernate JPA - Inicializar schema.sql no H2 #30

Open leandromoraesrj opened 2 years ago

leandromoraesrj commented 2 years ago
leandromoraesrj commented 2 years ago

Acessar a documentação para mais detalhes: https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto.data-initialization

  1. auto pelo hibernate O JPA possui recursos para geração de DDL e estes podem ser configurados para serem executados na inicialização no banco de dados.

spring.jpa.generate-ddl será ignorado se você tiver uma configuração para spring.jpa.hibernate.ddl-auto . Isso ocorre porque a segunda configuração é mais refinada e, portanto, substitui a primeira.

spring.jpa.hibernate.ddl-auto=none spring.jpa.hibernate.ddl-auto=validate

A inicialização do banco de dados funcionará apenas para bancos de dados incorporados (H2, HSQLDB, ...). Para usá-lo para outros bancos de dados:

spring.datasource.initialization-mode=always

Se estiver usando vários fornecedores de banco de dados, poderá nomear seu arquivo data-h2.sql ou data-mysql.sql e configurar a spring.datasource.platformpropriedade:

spring.sql.init.platform=h2

O Spring Boot pode criar automaticamente o esquema (scripts DDL) com base nos arquivos: schema.sql e data.sql, respectivamente (nesse caso, não é exibido no console o DDL).

É possível adicionar uma spring.datasource.data para application.properties executar uma lista de arquivos sql

spring.datasource.data=classpath:accounts.sql, classpath:books.sql

Para que a inicialização baseada em script seja executado após a criação do esquema pelo Hibernate

spring.jpa.defer-datasource-initialization=true

Para banco de dados na memória, você deve usar DB_CLOSE_ON_EXIT=FALSE: spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE

Para criar um schema ao inicializar o H2: spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;INIT=CREATE SCHEMA IF NOT EXISTS SCAD

Para definir um default schema: spring.jpa.properties.hibernate.default_schema=scad