Biblioteca para conexão em múltiplos banco de dados

Pessoal,

Tenho a necessidade de acessar outras bases de dados na aplicação que trabalho. O porém é que da maneira que foi construída, essa aplicação somente vislumbra o acesso a uma única base de dados de cada vez. Para alterar isso, eu teria de refazer a camada de persistência. Talvez seria a melhor situação, mas não vale muito a pena a essa altura do campeonato.

Incialmente, preciso de acesso a uma base FireBird e uma MSSQL. Para solucionar isso, pensei em criar uma biblioteca que seria acrescentada à lista de libs da aplicação e que serviria como um conector a essas outras bases. Penso que esse conector teria uma certa inteligência para abrir e fechar as conexões por si, mas somente faria um select nessas bases, sem a opção de escrever nelas.

Algumas perguntas:

  1. Existe algo que faça isso?
  2. Valeria a pena usar Hibernate para gerenciar a conexão desse projeto com a(s) base(s) de dados?
  3. Seria razoável abrir uma conexão e fazer uma NativeQuery?

Aguardo sugestões!

Vamos a suas perguntas

  1. Existe algo que faça isso?
    R: Até onde eu saiba não basta vc baixar os conectores JDBC de cada banco e adicionar ao seu projeto

2)Valeria a pena usar Hibernate para gerenciar a conexão desse projeto com a(s) base(s) de dados?
R: Sim Hibernate ajudaria tem um outro framework da Red Hat tambem que auxilia a trabalhar com mais de um banco só não me lembro o nome

3)Seria razoável abrir uma conexão e fazer uma NativeQuery?
Não entendi muito bem uma nativeQuery no Hibernate, ou nativeQuery seria usar JDBC?

Sobre JDBC e JPA, eu sei que uma galera vai falar que não, mais por experiência própria le digo o JPA é a melhor ferramenta para trabalhar com CRUD’s relatórios, etc.
Agora se o seu sistema for para fazer replicação de dados ou importações/exportações só JDBC salva

@leonardobhbr,
Obrigado pelas suas respostas!
Deixa eu tentar explicar melhor o que preciso fazer: eu preciso construir uma tabela com valores coletados de diversos bancos.
Neste momento, para cada linha da tabela, definida pelo , preciso fazer 5 queries do tipo:

A questão é que são duas queries contra dois bancos MSSQL distintos e as outras 3 contra um banco Firebird. Então, se eu tiver 10 linhas na tabela vou ter que abrir, executar a consulta e fechar as 30 conexões “na unha” - uma para cada banco MSSQL e uma para o Firebird, vezes 10 (linhas na tabela).
Como existe essa questão de abrir e fechar conexão com outros bancos, eu pensei em fazer uma biblioteca que gerenciasse um pool de conexões dedicado para cada um desses outros bancos para eu ter um pouco mais de performance.

Verifique se nos banco que você necessita fazer as SQLs tem os comandos GRANT e SYNONYM.

Por exemplo no banco de dados Oracle o GRANT - concede permissão a um outro usuário acessar um objeto (tabela, procedure, package). O SYNONYM cria um sinônimo (apelido) para o objeto em um outro usuário.

@joede.fadel
Desculpe, não entendi como esses comandos poderiam me ajudar. Podes explicar melhor?

Um exemplo pratico com distintos: usuario: pessoas com a tabela pessoa e usuario: vendas usuario venda com a tabela venda.

No banco de dados Oracle não tem como criar várias bases de dados para um usuário, usuário tem uma base distinta. Então eu não consigo acessar diretamente o a tabela pessoa do usuario pessoa, então eu tenho que executar 2 comandos o GRANT para eu dar acesso ao usuario vendas a tabela pessoa:

//comando executado no usuario pessoas, nesse comando eu concedo acesso a tabela pessoa para usuario vendas
grant select on pessoa to usuario;

após esse comando eu consigo acessar a tabela pessoa pelo usuario vendas da seguinte forma

//comando utilizado no usuario vendas
select * from pessoas.pessoa

funciona normalmente, todavia posso facilitar simplificar o acesso a tabela pessoa no usuario vendas criando um “apelido”

//comando executado no usuario vendas
create or replace synonym pessoa for pessoas.pessoa;
//apos ciriar o "apelido"
select * from pessoa

O que você tem que ver, é se tem algo parecido com isso nos bancos mssql e firebird