Arquivo persistence.xml

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>

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.

Consegue me passar um exemplo? Estou utilizando Oracle

Obrigado

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:

[code]<persistence-unit name=“persistencia” transaction-type=“RESOURCE_LOCAL”>
<provider>org.hibernate.ejb.HibernatePersistence</provider>

	&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;[/code]

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

Rodrigo,

muito obrigado pela ajuda.

Abs

Camilo Oscar