Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Configuração Spring boot para Carregar arquivo .SQL em produção

Gostaria de saber como configurar em um projeto com Spring boot, para quando a aplicação subir em produção, ser carregado um arquivo .sql com comandos Inserts ! sabendo-se que já tenho o arquivo .sql dentro do projeto!

desde já Obrigado!

2 respostas
solução!

Fala Iran, tudo bem ?

Existe a possibilidade de usar o recurso de import direto pela JPA. Dê uma olhada aqui -> https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html#howto-initialize-a-database-using-hibernate

Na documentação diz que o Hibernate executa automaticamente o script desde que verifique o arquivo import.sql na raiz do classpath. "In addition, a file named import.sql in the root of the classpath will be executed on startup if Hibernate creates the schema from scratch"

Mas ele ressalta que é funcionalidade do Hibernate. Não do Spring.

Uma possibilidade que o Spring te dá é implementar as interfaces ApplicationContextAware ou mais precisamente ResourceLoaderAware se necessário.

Interface to be implemented by any object that wishes to be notified of the ApplicationContext that it runs in.

This interface can also be implemented if an object needs access to file resources, i.e. wants to call getResource, wants to publish an application event, or requires access to the MessageSource. However, it is preferable to implement the more specific ResourceLoaderAware, ApplicationEventPublisherAware or MessageSourceAware interface in such a specific scenario.

Implementando a interface seu objeto será instanciado e notificado sobre a subida da aplicação chamando o método pra você. Assim poderia carregar o recurso do arquivo sql e executar por exemplo a partir da JPA executando queries nativas. Pode inclusive usar os @Profile pra definir a necessidade apenas pra ambiente de prod etc.

De uma olhada na documentação das interfaces, pode ajudar no caso. Espero ter ajudado. Abraço!

Muito Obrigado, Rafael! Deu certo!