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!
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!
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!