Arquivo persistence.xml

4 respostas
camilooscar

Pessoal, preciso de ajuda.

No meu projeto, tenho o arquivo persistence.xml, onde tem as informações de acesso ao banco de dados. Preciso que as informações de usuário e senha (conexão com DB) estejam fora deste arquivo, por motivo de segurança dentro da empresa.

Alguém saberia como fazer?

Segue parte do meu persistence.xml

<properties>
			<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
			<property name="hibernate.h2mddl.auto" value="validate" />
			<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
			<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@//000.000.0.00:0000/car10"/>
			<property name="javax.persistence.jdbc.user" value="xxx_xxx"/>
			<property name="javax.persistence.jdbc.password" value="yyyyy"/>
			<property name="hibernate.temp.use_jdbc_metadata_defaults" value="false" />
			<property name="hibernate.show_sql" value="false" />
			<property name="hibernate.format_sql" value="false" />
		</properties>

4 Respostas

rodrigo.uchoa

Acho que o melhor caminho a seguir seria obter a conexão indiretamente, por meio de JNDI. Nesse caso você não colocaria as informações de conexão no arquivo, somente o nome JNDI do datasource.

camilooscar

Consegue me passar um exemplo? Estou utilizando Oracle

Obrigado

rodrigo.uchoa

Oi cara.

Primeiro você tem que entender a idéia da coisa. Essa mudança pode inclusive afetar a estrutura do seu projeto.

Você tem que configurar um datasource (fonte de dados) no seu servidor de aplicação. A lógica é deixar com que o servidor se preocupe em obter conexões do banco, com a sua própria implementação de pool e tudo mais. Até porque, eles costumam fazer isso bem melhor do que o código da gente.

Uma vez que o seu servidor sabe como ir buscar as conexões no banco, a sua aplicação não precisa mais dessa preocupação. A preocupação da aplicação vai passar a ser simplesmente chegar pro servidor e falar "Me da uma conexão de banco ai", sem nem se preocupar o que servidor faz pra obtê-la. Ai entra então o nome JNDI. O datasource, a fonte de dados criada no servidor de aplicação tem que receber um nome, e é esse nome que sua aplicação vai usar para pedir uma conexão pro servidor.

Um exemplo como ficaria o persistence seria:

&lt;persistence-unit name="persistencia" transaction-type="RESOURCE_LOCAL"&gt;
		&lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
		
		&lt;non-jta-data-source&gt;java:jboss/MyDataSource&lt;/non-jta-data-source&gt;		
		
		&lt;properties&gt;
			&lt;property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" /&gt;  
                        &lt;property name="hibernate.h2mddl.auto" value="validate" /&gt;  
            &lt;property name="hibernate.temp.use_jdbc_metadata_defaults" value="false" /&gt;  
            &lt;property name="hibernate.show_sql" value="false" /&gt;  
            &lt;property name="hibernate.format_sql" value="false" /&gt;  
		&lt;/properties&gt;
	&lt;/persistence-unit&gt;

O nome JNDI do datasource está na linha 4. As informações de conexão do banco serão preocupação do ambiente.

camilooscar

Rodrigo,

muito obrigado pela ajuda.

Abs

Camilo Oscar

Criado 18 de novembro de 2013
Ultima resposta 18 de nov. de 2013
Respostas 4
Participantes 2