Hibernate - SQL próprio

4 respostas
T

Estou usando o Hibernate, e tenho algumas dúvidas, li alguns artigos etc… mas…
Na estrutura SQL, exemplo:

private SessionFactory factory;
.
.
.
.
public List getListaProdutos(String condicaoQueEstouFalando) throws Exception{
         Session session = factory.openSession();
         List produtos = session.find(condicaoQueEstouFalando);
         session.flush();
         session.close();
         return produtos;
}

o Hibernate tem uma própria, como se fosse a pl/sql da Oracle.
Onde eu encontro a lista disso.? Quero tirar mais vantagens em minhas querys.

Outra coisa:
E se um dia eu precisar fazer uma mudança, exilar o Hibernate (no bom sentido da palavra, :slight_smile: )…
Terei que refazer todo o SQL.
Há como usar o SQL puro, ou no caso do Oracle (se eu usar como banco).

O que é usado.?
Quem usa o Hibernate, o que me falam?
Como devo me desenvolver…?
Podem me instruir.

4 Respostas

rodolfoliviero

Sim o hiberbate tem uma propria query languange HQL…
Se vc usar ela e um dia for “exilar” o hibernate com certeza vocÊ vai ter q implementar novamente suas classses de acesso a dados …mas a grande vantagem de usar eh vc criar querys orientada a objetos e alem de tudo poder mudar de banco a hora que bem entender apenas mudando o diealeto e o driver jdbc…

gilliard_santos

Voce pode também usar somente a JPA (Java Persistence API) em vez de usar diretamente o hibernate, entao nesse caso, além de voce poder mudar de banco a qualquer momento, vc pode mudar de implementacao da JPA (que é uma especificacao). O proprio hibernate implementa a JPA, mas também tem o TopLink da Oracle, e nao sei se tem outros. A desvantagem de voce usar o JPA puro, em vez de usar classes proprias do hibernate é que no JPA nao tem um interface como Criteria, onde voce faz consultas mais dinamicas do que com HQL. Agora se voce for usar somente HQL, ou mesmo SQL como voce esta querendo, acredito que nao teria problemas em usar a JPA.

T

Tem algo que nao entendi bem, talvez porque nao tenha usado, entao fico com duvidas em quais as vantagens no funcionamento.

Em java vejo muito claramente a importancia e vantagem disso, mas em instrucoes SQL.s…

Li algo sobre isso…

Polimorfismo e herancas em instruções? Onde e como poderei usar isso nas instruções?

podem por favor, coloca um exemplo, mas bem simples mesmo disso?

gilliard_santos

com hibernate/jpa vc trabalha com objetos, entao suponha q vc tem uma table chamada tb_pessoa com os campos pes_nome e pes_idade que representa a classe Pessoa que tem os mesmos atributos

com sql vc faria um "select * from tb_pessoa" e receberia um result set q teriam as informacoes referentes a cada coluna… ou entao um "select * from tb_pessoa where pes_idade &gt 18"…
com hql vc faria assim "from Pessoa" e "from Pessoa p where p.idade &gt 18"…
em EJBQL, mudaria um pouquinho: "select p from Pessoa p where p.idade &gt 18"…
e em hql e ejbql, vc nao recebe um resultset, e sim uma List de objetos Pessoa.

entao, a vantagem é que voce faz tudo baseado nos seus objetos, sem se preoculpar com os nomes das colunas, o retorno já sao objetos, e assim por diante.

Sem contar que vc pode desenvolver na sua maquina usando um banquinho mais leve e depois botar em producao num oracle ou db2 da vida sem nenhum problema de sintaxe de sql incompatível…

Criado 19 de dezembro de 2006
Ultima resposta 19 de dez. de 2006
Respostas 4
Participantes 3