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

Há possibilidade de manter um arquivo com as configurações de banco de dados em um arquivo externo?

Olá a todos, desenvolvi um projeto utilizando o framework Hibernate e de acordo com o curso as configurações do framework e do banco de dados estão em um arquivo chamado "persistence.xml". Porém como esse projeto será distribuído em diferentes locais, sendo assim em cada local as configurações de banco de dados serão diferentes, gostaria de saber se essas configurações haveria a possibilidade de mante-las em um arquivo externo após a geração do .jar para que facilitasse a distribuição.

Obrigado, Alexandre.

2 respostas
solução!

Oi, Alexandre.

Você pode carregar as propriedades do banco em específicas num arquivo de propriedade e repassa-las pro EntityManagerFactory através do segundo parâmetro do método createEntityManagerFactory.

Uma implementação possível para o JPAUTIL seria essa:

private static EntityManagerFactory entityManagerFactory;

    static {
        try(InputStream jpaFileInput = new FileInputStream("C:\\teste.properties")) {
            Properties properties = new Properties();
            properties.load(jpaFileInput);
            entityManagerFactory = Persistence.createEntityManagerFactory("financas", properties);
        }
        catch(Exception ex) {
            //Tratamento de exceção
        }
    }

    public EntityManager getEntityManager() {
        return entityManagerFactory.createEntityManager();
    }

Já seu arquivo properties (aqui, teste.properties) ficaria assim:

javax.persistence.jdbc.url = jdbc:mysql://localhost:3306/financas
javax.persistence.jdbc.user = root
javax.persistence.jdbc.password = 
javax.persistence.jdbc.driver = com.mysql.jdbc.Driver

Mesmo com essa abordagem o arquivo persistence.xml ainda precisa existir dentro do projeto para ele funcionar, porém não necessário mais declarar as propriedades já presentes dentro do arquivo properties.

Assim você pode desacoplar as propriedades da sua conexão do projeto em um outro arquivo.

Qualquer coisa estamos à disposição.

Muito obrigado, perfeito!!