Hibernate -> CreateQuery vs CreateCriteria  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
passos
JavaEvangelist
[Avatar]

Membro desde: 25/10/2002 10:19:27
Mensagens: 345
Localização: Rio de Janeiro
Offline

Quando e porque você utiliza CreateQuery ao inves de CreateCriteria e vice e versa?

Daniel Passos (twitter: @passos)
Curso Java | Curso Rails | Curso Android
[Email]
Rodrigo Carvalho Auler
Virtual Machine Man

Membro desde: 14/02/2003 15:59:17
Mensagens: 576
Localização: Rio de Janeiro
Offline

CreateQuery: quando a minha query tem parametros fixos.
CreateCriteria: quando a minha query tem parâmetros variáveis, por exemplo quando os parametros variam de acordo com o que o usuário preencheu num formulário de pesquisa.

[]'s

Rodrigo C. A.
passos
JavaEvangelist
[Avatar]

Membro desde: 25/10/2002 10:19:27
Mensagens: 345
Localização: Rio de Janeiro
Offline

Com createCriteria e possivel fazer algo com:


Daniel Passos (twitter: @passos)
Curso Java | Curso Rails | Curso Android
[Email]
Rodrigo Carvalho Auler
Virtual Machine Man

Membro desde: 14/02/2003 15:59:17
Mensagens: 576
Localização: Rio de Janeiro
Offline

Não... a função do CreateCriteria é outra, é criar query dinâmica... você não passa uma query pronta pra ele, vc monta a query através dos métodos da interface Criteria...

[]'s

Rodrigo C. A.
passos
JavaEvangelist
[Avatar]

Membro desde: 25/10/2002 10:19:27
Mensagens: 345
Localização: Rio de Janeiro
Offline

Não a minha duvida nao e sobre poder passar uma query pra ele e sim poder pesquisar subniveis:

Daniel Passos (twitter: @passos)
Curso Java | Curso Rails | Curso Android
[Email]
Rodrigo Carvalho Auler
Virtual Machine Man

Membro desde: 14/02/2003 15:59:17
Mensagens: 576
Localização: Rio de Janeiro
Offline

Ah tá... até dá... mas é chato...

Por isso que prefiro concatenar string pra montar a query e usar o CreateQuery....

[]'s

Rodrigo C. A.
passos
JavaEvangelist
[Avatar]

Membro desde: 25/10/2002 10:19:27
Mensagens: 345
Localização: Rio de Janeiro
Offline

Pre quem tinha a curiosidade de ver como ficaria isso:


This message was edited 1 time. Last update was at 16/07/2005 16:06:17


Daniel Passos (twitter: @passos)
Curso Java | Curso Rails | Curso Android
[Email]
carneiro
JavaEvangelist
[Avatar]

Membro desde: 07/04/2005 11:37:42
Mensagens: 328
Offline

Tipo, acho que o melhor mesmo é usar namedQuerys, assim você tira os códigos HQL de dentro do aplicacao...

Davi Luan Carneiro
Desenvolvedor JEE
[Email] [MSN]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

passos wrote:Pre quem tinha a curiosidade de ver como ficaria isso:




Essa query em Criteria funcionou? Você testou ela?

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

No Hibernate 2.x é um pouco mais chato para acessar objetos de relacionamento em Criterias. Há dois jeitos:

ou


Mas a grande porcaria mesmo é não poder fazer um simples count(*) usando Criteria no Hibernate 2.x. Arrumaram ambos os problemas no 3.x.

Como disseram, é bom usar queries em consultas com filtros pré-definidos, opis o Hibernate faz o cache destas queries. Para todo o resto prefiro Criteria infinitamente, bem melhor do que ficar caçando Strings.

This message was edited 2 times. Last update was at 18/07/2005 09:48:42


Former LIPE.
[ICQ]
passos
JavaEvangelist
[Avatar]

Membro desde: 25/10/2002 10:19:27
Mensagens: 345
Localização: Rio de Janeiro
Offline

Esqueci do createCriteria

Se por acaso minha classe venda (do exemplo acima) tivesse um relacionamento de M -> 1 como eu faria para ele nao iniciar essa parte 1

Ex: Minha venda (dentro de item) tem um Cliente porem eu nao quero ele inicie esse Cliente.

Tentei usar FetchMode mas não funcionou:

This message was edited 1 time. Last update was at 18/07/2005 11:32:11


Daniel Passos (twitter: @passos)
Curso Java | Curso Rails | Curso Android
[Email]
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Se você usa createCriteria ao invés de createAlias não é necessário colocar o alias, pois tudo o que vier depois da segunda criteria será referente ao relacionamento. Ficaria algo como:


E você está usando Hibernate 3.x, não? Tem certeza que é necessário fazer isso?

This message was edited 1 time. Last update was at 18/07/2005 13:12:37


Former LIPE.
[ICQ]
passos
JavaEvangelist
[Avatar]

Membro desde: 25/10/2002 10:19:27
Mensagens: 345
Localização: Rio de Janeiro
Offline

LIPE wrote:Você está usando Hibernate 3.x, não?


Sim!

LIPE wrote:Tem certeza que é necessário fazer isso?


Se eu tivesse mapeado ele corretamente como many-to-one não mas como eu erroniamente colocoi one-to-one

Agora ta funcionando sem eu precisar usar o FetchMode

Daniel Passos (twitter: @passos)
Curso Java | Curso Rails | Curso Android
[Email]
Guilherme Silveira
Administrador

Membro desde: 14/08/2002 10:09:26
Mensagens: 1096
Localização: Sao Paulo
Offline

A resposta de sua pergunta eh:

Java eh orientado a strings ou a objetos?



-------------------------------------------------------
Guilherme Silveirahttp://blog.caelum.com.br
[Email] [WWW] [MSN]
jack_-_ganzha
JavaEvangelist
[Avatar]

Membro desde: 31/03/2003 13:18:12
Mensagens: 315
Localização: Recife - Pernambuco
Offline

Um bom artigo sobre Criteria API:
http://www.javalobby.org/articles/hibernatequery102/

valeuz...

Marcos Silva Pereira

http://www.javafree.org
http://marcospereira.wordpress.com
[MSN] [ICQ]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team