Ajuda Persistence.createEntityManagerFactory

4 respostas
fabioebner
pessoal tenho o seguinte persistence.xml
<?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="CaixaNovoPU" transaction-type="RESOURCE_LOCAL">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <class>br.com.dnasolution.entity.TbCaixa</class>
    <class>br.com.dnasolution.entity.TbOperacaoPendencia</class>
    <class>br.com.dnasolution.entity.TbCliente</class>
    <class>br.com.dnasolution.entity.TbPagamentoMovimentacao</class>
    <class>br.com.dnasolution.entity.TbFormaPagamento</class>
    <class>br.com.dnasolution.entity.TbOperacaoConsolidado</class>
    <class>br.com.dnasolution.entity.TbMovimentacao</class>
    <class>br.com.dnasolution.entity.TbPendenciaCliente</class>
    <class>br.com.dnasolution.entity.TbFuncionario</class>
    <class>br.com.dnasolution.entity.TbValeCaixa</class>
    <class>br.com.dnasolution.entity.TbConfiguracaoCaixa</class>
    <properties>
      <property name="toplink.jdbc.user" value="postgres"/>
      <property name="toplink.jdbc.password" value="dna44100"/>
      <property name="toplink.jdbc.url" value="jdbc:postgresql://10.0.0.1:5432/db_dnaso"/>
      <property name="toplink.jdbc.driver" value="org.postgresql.Driver"/>
    </properties>
  </persistence-unit>
</persistence>
e chamo ele assim:
emf = Persistence.createEntityManagerFactory("CaixaNovoPU");
        return emf.createEntityManager();
porem eu li q o createEntityManagerFactory recebe um Map que seria alguns parametros adicionais e caso esse parametro ja existe.. ele sobrescreve o mesmo.. porem eu tentei o seguinte:
Properties prop = new Properties();
        prop.setProperty("toplink.jdbc.url", "jdbc:postgresql://10.0.0.111:5432/db_dnaso");
        
        emf = Persistence.createEntityManagerFactory("CaixaNovoPU",prop);
        return emf.createEntityManager();

e nao deu certo. .eu nao consigo mudar ali o servidor q ele vai buscar o DB.. alguem sabe como eu posso fazer isso?? pois o meu persistence.xml esta dentro do meu arquivo .jar, entao qdo iniciar a minha aplicacao eu vou no diretorio do meu .jar e nao consigo mexer em tempo de execucao, logo se eu deixar um arquivo properties fora do meu .jar sempre q iniciar a aplicacao eu busco nele o ip do servidor

segue o texto o createEntityManagerFactory

public static EntityManagerFactory createEntityManagerFactory(String arg0, Map arg1)
Create and return an EntityManagerFactory for the named persistence unit using the given properties.

Parameters:
persistenceUnitName - The name of the persistence unit
properties - Additional properties to use when creating the factory. The values of these properties override any values that may have been configured elsewhere.
Returns:
The factory that creates EntityManagers configured according to the specified persistence unit.

obrigado

4 Respostas

rubone

deixa eu ver se eu entendi… vc está querendo que sua aplicação se conecte em mais de um BD e durante a execução vc quer controlar com qual banco vc irá trabalhar naquele momento?

fabioebner

Não cara… eu quero dar a opcao para o usuario selecionar em qual ip esta o DB dele… sempre sera conectado em apenas 1 DB mas ele pode mudar o ip do servidor de uma hora pra outra… e como o meu .xml esta dentro do .jar nao posso mudar somente se for dessa meneira entendeu

valtoni

Sim Fábio, mas qual foi a bronca que deu?

valtoni

Ahh, sim, agora saquei o que você quer fazer.
Bom a má notícia é que não dá pra ser feito: esse parâmetro mexe apenas em tudo o que estiver dentro da tag , ou seja, geralmente configurações do vendor; OU SEJA (ufa); hibernate, toplink, etc.
Dá pra fazer, vou verificar! :wink:

Criado 26 de setembro de 2008
Ultima resposta 28 de out. de 2008
Respostas 4
Participantes 3