Acesso a múltiplas bases de dados distintas

4 respostas
Krol_July

Estou desenvolvendo um trabalho acadêmico que consiste em acesso a multiplas bases distintas de dados.

O trabalho é na área de geoprocessamento e será criado um plugin pro Open Jump, um sistema de informações geográficas

Através desse plugin eu devo permitir que o usuário relacione tabelas de diferentes bases de dados, e os dados selecionado por ele deverão ser exibidos, posteriormente, quando ele pedir informações sobre determinada área em um mapa.

Meu principal problema (mas não o único, hehehe), consiste em acessar os dados em mais de um banco de dados, alguém tem alguma idéia ou sugestão?

Estou pensando em implementar meu próprio modelo para acesso, ele teria classe Banco, Tabela, Campo e Relacao, e seria capaz de organizar isso através de outra classe que usaria dois ResultSets de duas conexões diferentes e os cruzaria para gerar os dados que vou precisar. O que vocês acham?

4 Respostas

Diego_Marinho

Olá Krol July,

bem isso que vc tá querendo fazer pode ser feito com o Hibernate.

No Hibernate você cria SessionFactories. Cada SessionFactory está relacionada a um Banco de Dados.
Basta criar quantos SessionFactory for necessários para cada banco de dados.

Para tentar abstrair essa criação você pode consultar o Padrão: “Factory method pattern” - http://en.wikipedia.org/wiki/Factory_method_pattern.

Espero ter ajudado.

G

Há algum tempo tive a necessidade de fazer isso. No meu caso eu achei mais simples criar dblink para cada base de dados e usar os selects baseados em tabela@dblink. No caso eram 3 bases diferentes, e todas usando Oracle 10g.

Se você está usando alguma ferramenta de ORM não sei como elas trabalham bem com isso. Caso você esteja fazendo selects na mão nada te impede de passar como parametro qual a base de dados ele quer usar e você usar os dblinks.

Krol_July

Blz Diego Marinho,
Já havia pensando em usar Hibernate, comecei a aprofundar minhas pesquisas no assunto e resolvi seguir outro rumo.
Neste caso eu acho que teria recurso e processamento disperdiçado usando o Hibernate, pois a princípio só quero fazer consultas e utilizar os dados desta
para popular e alterar meu SIG(Sistema de Informação Geográfica).
Na parte de inserção, exclusão vou usar o que o SIG e o banco de dados respectivo me fornece. O banco de origem, é utilizado somente para consulta para popular o de destino.

Estou apostando nos recursos que o Driver JDBC me fornece.
Acho que atende às minhas necessidades. A minha dúvida era como relacionar os bancos e como modelar este ferramenta de acesso a base de dados distintas.

garcia-jj, quanto aos dbLinks, não sei se pode ser uma alternativa, não conheço muito bem. Queria criar meu próprio modelo, com uma estrutura simples mais bem refinada.
Não sei como os dbLinks se enquadrariam. Me explica melhor como funcionam …
No meu projeto tenho que associar os dados quando já cadastrados com os de outro banco ou usar dados de outro banco para popular, o dbLink implementaria este requisito. Pode ser suportado por qualquer banco?

Vou pesquisar um pouco mais sobre o assunto, quem sabe se enquadre …

Valeu pelas dicas.

Felagund

Você pode usar simplemenste JDBC, e fazer uma conection em cada banco, e tratar os retornos,

Mas como vi que seu projeto e mesclar as informações de diversas bases, o interessante seria trabalhar em alto nivel esses dados, ou seja, você le das bases o data cru, ResultSet, e joga os valores para classes (que não fazer conexão com o banco), e mesclam a informação do jeito que vc preferir, usando java.

Lembrando que quanto mais connections vc manter aberta, muito mais recurso ira consumir.

Criado 25 de abril de 2010
Ultima resposta 26 de abr. de 2010
Respostas 4
Participantes 4