Setar usuário e senha do banco no hibernate runtime

4 respostas
vagnerinf

Olá!

Estou usando NetBeans, hibernate, MySQL. Gostaria de modificar o arquivo hibernate.cfg.xml em tempo de execução onde ele passa a senha e usuário pra fazer a conexão. Os dados usuário e senha devem ser inseridos por quem vai utilizar o programa. Não sei se esta é a melhor maneira. Se existir outra forma por favor postar.

O arquivo de configuração hibernete.cfg.xml é criado automaticamente pelo NetBeans no <pacote padrão>. Como posso acessá-lo runtime?

Não gostaria de deixar usuário e senha em um arquivo xml por questões de segurança.

4 Respostas

Mero_Aprendiz

vagnerinf:
Olá!

Estou usando NetBeans, hibernate, MySQL. Gostaria de modificar o arquivo hibernate.cfg.xml em tempo de execução onde ele passa a senha e usuário pra fazer a conexão. Os dados usuário e senha devem ser inseridos por quem vai utilizar o programa. Não sei se esta é a melhor maneira. Se existir outra forma por favor postar.

O arquivo de configuração hibernete.cfg.xml é criado automaticamente pelo NetBeans no <pacote padrão>. Como posso acessá-lo runtime?

Não gostaria de deixar usuário e senha em um arquivo xml por questões de segurança.

Bem…

  • no seu caso, as permissões de CRUD (Create, Read, Update, Delete) são do banco, e não do sistema?
  • banco de dados é legado? Se não, o que impede de que as permissões sejam de sistema e não de banco?

[]'s
JL

L

O que vc pode fazer, é mapear um usuario qualquer no arquivo persistence.xml, então na hora de recuperar EntityManager sobrescrever o usuario e a senha,
dessa forma:

Map configOverrides = new HashMap();
        configOverrides.put("hibernate.connection.username", "usuario");
        configOverrides.put("hibernate.connection.password", "senha");
        EntityManagerFactory programmaticEmf =
                Persistence.createEntityManagerFactory("TestePU", configOverrides);

        EntityManager e = programmaticEmf.createEntityManager();

Com isso vc pode sobrescrever qualquer propriedade na unidade de persistencia…

Valew…

Só para constar essa informação foi retirada http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html_single/#setup-configuration-bootstrapping, claro com algumas modificações.

vagnerinf

Muito bem, ainda não testei mas parece que resolve.

Mais uma pergunta como posso criar um org.w3c.dom.Document do arquivo hibernate.cfg.xml que está em <pacote padrão> dentro do meu projeto?

Respondendo sobre o banco de dados, quero ter a segurança em duas vias tanto no banco quanto no programa.

Mero_Aprendiz

Esse foi um dos motivos que perguntei antes de dar a resposta.
Pelo que já pode ver, não é uma boa usuário de sistema (operadores, gerencia, etc) tenham uma forma de acesso direto ao banco de dados.
Acredito que acesso ao banco deve ser restrito aos adminstradores de banco, ou à usuários especializados, como os programadores por exemplo.
Posso estar enganado (se tiver, alguem me corrige), mas usuários com senhas de acesso ao banco pode ser mais um problema de segurança que uma solução.

[]'s
JL

Criado 15 de julho de 2009
Ultima resposta 16 de jul. de 2009
Respostas 4
Participantes 3