Dados do persistence.xml em .properties, é possivel?

2 respostas
thimor

Ola a Todos,

Estou com uma duvida e gostaria de saber se alguem teria como esclarecer.
Quero colocar pelo menos a informacao da URL num arquivo .properties para ser fazer a conexao utilizando JPA. segue um exemplo:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="TesteDesempenhoPU" transaction-type="RESOURCE_LOCAL">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <class>br.com.rnautomacao.teste.vo.Venda</class>
    <properties>
      <property name="toplink.jdbc.user" value="user"/>
      <property name="toplink.jdbc.password" value="senha"/>
      <property name="toplink.jdbc.url" value="jdbc:mysql://192.168.1.2:3306/Banco"/> //quero colocar esse parametro no propertie.
      <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
    </properties>
  </persistence-unit>
</persistence>

2 Respostas

Lavieri

sim é… mas ai vc tera que ler manualmente o properties, e inserir ele na chamada da unidade de persistencia…

ponha na raiz so src o arquivo

personalisado.properties

toplink.jdbc.user=user toplink.jdbc.password=senha toplink.jdbc.url=jdbc:mysql://192.168.1.2:3306/Banco toplink.jdbc.driver=com.mysql.jdbc.Driver

vc consegue achar o arquivo assim:
ResourceBoundle boundle = ResourceBoundle.getBoundle(“personalisado”);

depois vc precisa construir um map com as propriedades para usar na isntancia do Persistence

Enumeration properties = boundle.getKeys(); Map&lt;String,String&gt; persistenceProperties = new HashMap&lt;String,String&gt;(); while(properties.hasMoreElements()) { String key = (String)properties.nextElement(); if (key.startWith("toplink") //pra filtrar caso haja mais propriedades no mesmo arquivo persistenceProperties.put(key,boundle.getString(key)); } EntityManagerFactory emf = Persistence.createEntityManagerFactory("nome_da_unidade_de_persistencia", persistenceProperties);

thimor

Blz. Muitissimo obrigado pela dica. So mais uma coisa. Nesse caso entao no persistence.xml eu deixo a tag sem as opcoes, correto?

Criado 30 de outubro de 2009
Ultima resposta 10 de nov. de 2009
Respostas 2
Participantes 2