Fórum como ligar postgresql com sqlserver utilizando JPA em um projeto JSF #9471

22/09/2009

0

Boa tarde meus caros amigos, eu gostaria de saber como fazer para ligar 2 bancos diferentes em 2 servidores diferentes. Eu andei lendo algumas coisas, e vi que tinha JNDI+datasource, talvez dê para resolver, porém eu não sei como configurar e não sei por onde começar, oq eu troco no meu persistence.xml, se eu vou ter que configurar meu server.xml do tomcat, e meu web.xml. Gostaria de receber uma luz. Eu usarei JSF como framework para web. Utilizarei JPA para persistencia. Obrigado.
Euclides Filizola

Euclides Filizola

Responder

Posts

22/09/2009

Dyego Carmo

Boa tarde  !!!

Preciso de mais algumas informações...

Você vai acessar ENTIDADES DIFERENTES nestes dois bancos ? EX:

Pessoa - Banco1, servidor1
Cliente - Banco2, servidor2

Onde a pessoa nao tem nenhum relacionamento com o cliente...

Ou

Pedido - Banco1, servidor1
Itens do Pedido (propriedade de Pedido) - Banco2, servidor 2...


Responder

Gostei + 0

22/09/2009

Euclides Filizola

Boa tarde Dyego, seria mais ou menos assim. Eu vou ter uma tabela funcionario no banco SQLServer, e dentro do meu sistema, eu vou precisar obter o nome dele, a matricula dele e o setor dele. Mas temos 2 problemas. A tabela Funcionario, está num banco de dados SQLServer. As tabelas do sistema todo, estarão num banco de dados PostgreSQL. O banco SQLServer está num servidor 172.168.0.25. O banco PostgreSQL está num servidor diferente. Entende meu problema ? Gostaria de saber como vou fazer isso ? Pelo que eu andei lendo, utiliza-se datasource, jndi... etc. Poderia me ajudar ?
Responder

Gostei + 0

22/09/2009

Euclides Filizola

Só frizando, é a opção de número 2. onde as 2 entidades estão em bancos diferentes, em servidores diferentes, porém tem relacionamento entre elas.
Responder

Gostei + 0

23/09/2009

Euclides Filizola

.... ? e ae , nada ?
Responder

Gostei + 0

23/09/2009

Dyego Carmo

Boa Tarde !

Esta manobra que voce quer fazer nâo é possivel de forma automatica, o JPA , nao vai fazer isto para voce...

Nem JPA nem Hibernate ou algo do genero...


Voce pode fazer de DUAS FORMAS esta sua integracao manual...

1) Criar um campo TRANSIENTE na entidade com o nome "PESSOA" e adicionar um ENTITYLISTENER nesta entidade que vai CARREGAR E SETAR A PESSOA X no ato da carla da entidade (@PostLoad)

2) Controlar de forma manual a recuperacao do nome e o cadastro deste usuario...


Fora estas duas maneiras... nao tem salvacao.


Espero ter ajudado :)
Responder

Gostei + 0

23/09/2009

Euclides Filizola

Seguindo oq vc disse, eu já tinha tentado fazer antes. " 2) Controlar de forma manual a recuperacao do nome e o cadastro deste usuario... " . Ou seja, tentei fazer o seguinte: criei uma outra entidade, na qual ira carregar os dados do servidor 1, e dentro do DAO, da entidade original, eu copiaria os arquivos pra lá. Não sei se é a melhor forma, mas da o seguinte erro: Caused by: java.sql.SQLException: Invalid object name 'teste.tbsisc_usuario'. tentei fazer um teste: @Test public void testInserirUsuario(){ String login = System.getProperty("user.name"); UsuarioDAO usuarioDAO = new UsuarioDAO(); UsuarioLocalDAO instance = new UsuarioLocalDAO(); UsuarioLocal user = new UsuarioLocal(); Usuario usuario = new Usuario(); usuario = usuarioDAO.buscarUsuario(login); user = instance.obterUsuario(usuario); instance.inserirUsuario(user); } Mas não funcionou :(
Responder

Gostei + 0

24/09/2009

Dyego Carmo

java.sql.SQLException: Invalid object name 'teste.tbsisc_usuario' ?

Isso vc fez a reperacao MANUAL via SELECT ou usou o JPA para o usuario tambem ?
Responder

Gostei + 0

24/09/2009

Dyego Carmo

java.sql.SQLException: Invalid object name 'teste.tbsisc_usuario' ?

Isso vc fez a reperacao MANUAL via SELECT ou usou o JPA para o usuario tambem ?
Responder

Gostei + 0

24/09/2009

Euclides Filizola

Aqui meu persistence.xml org.hibernate.ejb.HibernatePersistence entity.Grupo entity.AndamentoSolicitacao entity.Solicitacao entity.Estado entity.Viagem entity.UsuarioLocal org.hibernate.ejb.HibernatePersistence entity.Usuario org.hibernate.ejb.HibernatePersistence entity.Setor .... e aqui está minha entidade @Entity @Table(name="teste.tbsisc_usuario") public class UsuarioLocal implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name="pktbsisc_usuario") private Integer Id; @Column(name="nm_usuario") private String nome; @Column(name="cd_setor") private Integer codigoSetor; @Column(name="tp_usuario") private Integer tipoDeUsuario; /*@ManyToMany(targetEntity=Grupo.class,mappedBy="listaUsuarios") @JoinTable(name="tbsisc_usuario_grupo") private List listGrupos = new LinkedList(); @OneToMany(mappedBy="usuario") private List listaSolicitacao = new LinkedList(); */ ... Ae da uma olhada no meu tópico do guj http://www.guj.com.br/posts/list/139170.java .. Abraços.
Responder

Gostei + 0

25/09/2009

Dyego Carmo

Não estou entendendo...

Voce esta recuperando o Usuario (que esta em SQLServer) tambem via JPA ?

Responder

Gostei + 0

25/09/2009

Dyego Carmo

Não estou entendendo...

Voce esta recuperando o Usuario (que esta em SQLServer) tambem via JPA ?

Responder

Gostei + 0

25/09/2009

Dyego Carmo

Não estou entendendo...

Voce esta recuperando o Usuario (que esta em SQLServer) tambem via JPA ?

Responder

Gostei + 0

25/09/2009

Dyego Carmo

Não estou entendendo...

Voce esta recuperando o Usuario (que esta em SQLServer) tambem via JPA ?

Responder

Gostei + 0

28/09/2009

Euclides Filizola

Ae não liga não Dyego. Eu errei aqui meus mapeamentos e tudo mais. Vou ter que refatorar umas coisas. Mas minha dúvida era a seguinte: eu tenho 2 bancos da dados distintos e preciso fazer relacionamento entre eles, Entendeu ? Mas o que eu quero mesmo é outra coisa, preciso pegar o usuario logado na rede, para acessar uma intranet por exemplo. Vou abrir outro chamado. Pode fechar esse. Desculpa ae. Só uma observação: ou o sistema da devmedia ta muito lento, ou eles não me enviam mais email dizendo que recebi resposta, ou ta demorando muito mesmo. Abraços.
Responder

Gostei + 0

29/09/2009

Dyego Carmo

OK

Mas respondendo a sua questao:

Com JPA voce nao consegue fazer isso... dentro do mesmo contexto mapear dois banco de dados diferentes (SQLServer e MySQL por exemplo)... vc conseque se os BANCOS estiverem no MESMO servidor e forem do mesmo tipo , ex: Dois bancos de dados em um MySQL estando no MESMO servidor soh que em diferentes schemas...

Quanto a lentidao eu já havia percebido...

Mas valeu pela força...

Moderação , poderia verificar o que está ocorrendo ?

Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar