Consulta dinâmica e em tempo de execução com Hibernate

5 respostas
I

Olá!
Sou iniciante no hibernate e preciso de uma ajuda.
Tenho que fazer uma aplicação web de sincronismo de dados entre um banco de dados relacional e o diretório de dados LDAP.
Nesse caso o usuário escolhe qual dado do banco ele quer que seja transferido para o diretório.

Fiz um mapeamento com annotations e consegui fazer a transferência de dados, mas pelo que entendi
o mapeamento é feito manualmente em tempo de compilação o que não é exatamento o que estou precisando.

A escolha dos dados do banco tem que ser feito em tempo de execução.

Os passos seriam mais ou menos esses:

  1. Usuário escolhe banco de dados
  2. Usuário escolhe tabela
  3. Usuário escolhe coluna da tabela
  4. Retornar os dados da coluna escolhida

Existe alguma solução pra isso usando hibernate (ou nao)?
Tipo editar o arquivo de configuração e mapeamento dinamicamente, retornar o nomes da tabela e coluna, e depois retornar os dados da coluna?

Alguém pode me dar uma luz?
Grato!

5 Respostas

A

cara,

com hibernate vc nao consegue fazer isso que vc quer, vc vai ter que fazer JDBC msm.

t+

I

O problema que tenho com o JDBC é que pra cada banco a sintaxe da SQL é diferente (por exemplo na hora de mostrar tabelas e colunas) o que torna a aplicação dependente do tipo de SGBD.
Nesse caso com o hibernate seria só mudar o driver na configuração mas a camada de persistência de dados continuaria a mesma.
Ouvi dizer que em PHP existe um framework que consegue fazer isso. Imagino que em java haja alguma coisa parecida.

Tirando a parte de escolha de bancos, há alguma forma de escolher pelo menos tabelas e colunas em tempo de execução?

vlw

I

Mensagem duplicada.

A

entao cara,
com hibernate vc nao consegue fazer mapeamento em tempo de execução.
A configuração do banco em tempo de execução vc consegue.

t+

I

Obrigado pela resposta.
Mas caso eu já tenha um mapeamento, como eu faço para listar as colunas da tabela mapeada e retornar os valores da coluna escolhida?
Creio que seja simples mas não estou conseguindo fazer isso.

Criado 2 de dezembro de 2011
Ultima resposta 3 de dez. de 2011
Respostas 5
Participantes 2