3
respostas

Spring Boot + JPA não cria as Entitys Mapeadas

Qual a configuração necessária para o Spring Boot gerar as tabelas mapeadas pelo JPA automaticamente?

3 respostas

Oi Franklin.

O Spring boot não trabalha com JPA nativamente, ele precisa de um starter, que no caso é o spring-boot-starter-data-jpa.

Com esse starter, a gente tem acesso as configurações da JPA, então vc pode colocar qualquer DDL para gerar suas tabelas.

O padrão default é ele já criar as tabelas que vc mapear com @Entity.

Se vc tiver duvidas sobre as DDL, recomendo vc ver o curso de JPA/Hibernate pois não é uma duvida do Spring Boot em si, e sim do framework de persistencia.

Aqui tem mais detalhes de como usar as DDL com Spring boot e o starter que eu comentei(que a gente viu no curso, tbm):

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

Posso deixar o banco em update mesmo em produção? se eu gerar um jar não tenho como alterar o application.properties... teria q gerar dois jars? um com create e outro com update? obrigado

Você pode usar os profiles do maven

<profiles>
        <profile>
            <id>prod</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <db.connection.url></db.connection.url>
                <db.connection.username></db.connection.username>
                <db.connection.password></db.connection.password>
            </properties>
        </profile>
        <profile>
            <id>hml</id>
            <properties>
                <db.connection.url></db.connection.url>
                <db.connection.username></db.connection.username>
                <db.connection.password></db.connection.password>
            </properties>
        </profile>
    </profiles>

E no seu arquivo de propriedades, utilizar dessa forma:

spring.datasource.tomcat.url=${db.connection.url} spring.datasource.tomcat.username=${db.connection.username} spring.datasource.tomcat.password=${db.connection.password}