| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/08/2006 13:18:09
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Assim, finalmente resolvi gastar alguns momentos do meu precioso tempo pra aprender JPA utilizando o Hibernate e eis que eu descubro uma coisa no mínimo bizarra.
A especificação não tem uma API equivalente a Criteria do Hibernate!
E o pior, os "líderes" da especificação acharam que a api de criteria é um requisito exótico e que não valia a pena ser adicionado na especificação.
Agora eu pergunto aos gênios que tiveram essa maravilhosa idéia, se eu tiver que montar uma query em tempo de execução (dinamicamente) eu vou ter que fazer concatenação de Strings em EJB-QL? Isso é absurdo!
Pronto, agora é que eu não migro do Hibernate mas nem amarrado, porque eu é que não vou ficar fazerndo concatenação de Strings e fazendo binding de parâmetros porque algum i$%@ta achou que uma coisa básica como uma API de busca absolutamente orientada a objetos é um "requisito exótico" em uma ferramenta de mapeamento objeto relacional.
Desculpem o abuso e as palavras baixas, mas isso realmente foi demais pra mim. Desse jeito, EJB vai continua sendo só hype mesmo, porque até na hora de copiar o que presta os caras se perdem, nã...
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/08/2006 13:37:11
|
fabio.patricio
GUJ Master
Membro desde: 04/01/2004 02:51:33
Mensagens: 1512
Localização: Porto Alegre - RS
Offline
|
Mauricio,
É uma pena mesmo, o EJB3 deu uma boa evoluida, mas quem utiliza-lo vai continuar preso a sua implementacao. Se eu usar EJB3 com Hibernate vou ficar preso ao recusos extras dele, Criteria, validacoes e por ai vai. O mesmo serve pro TopLink ou outros que surgirem.
Quem sabe na proxima eles acertam.
Eu so nao sei se isso foi de proprosito pois um dos responsaveis por isso é o proprio Gavin assim o Hibernate continua com um diferencia frente ao EJB3.
]['s
|
Fabio Patricio
http://blog.wansoft.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/08/2006 16:17:56
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2478
Localização: Porto Alegre/RS
Offline
|
não foi de proposito isto não ...
o Hibernate continua na frente da JPA por que o Gavin King pegou as ideias reprovadas na spec e colocou no hibernate
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br - pt_BR
http://www.urubatan.info - en_US
Arquiteto J2EE
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/08/2006 16:49:47
|
marcelomartins
Moderador
![[Avatar]](/images/avatar/777669af68dbccabc30c3b6bcaa81825.jpg)
Membro desde: 07/01/2004 10:53:19
Mensagens: 1477
Localização: Porto Alegre - RS
Offline
|
Pois é, pra mim EJB continua sendo Stateless Session Bean, e só!
|
Marcelo Martins
http://twitter.com/marcelomartins
Tudo que hoje eu realmente preciso saber, aprendi no jardim da infância.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/08/2006 17:06:45
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2478
Localização: Porto Alegre/RS
Offline
|
yeap, mas agora muito mais fácil
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br - pt_BR
http://www.urubatan.info - en_US
Arquiteto J2EE
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/01/2007 16:58:51
|
chun
GUJ Master
Membro desde: 08/11/2004 15:43:41
Mensagens: 1693
Localização: Curitiba/PR
Offline
|
Descordo... acho que Entitys do EJB 3 ficaram bem legais.... calro que voce nao tem criteria (puts... quantos % da sua plicação voce monta query dinamica ? 1% ? 2% ? ) e ao contrario das declaracoes aqui... nao fica preso nao... a nao ser que voce USE caracteristicas proprias... se voce usar o padrao... fica tudo compativel (uso hibernate e toplink aqui mudando 1 linha do XML persistence.xml )
Acho que é exagero falar que "EJB" eh soh session... os Entitys 3 ficaram bem legais...
Eu prefiro sacrificar algumas "novidades" do que deixar meu software na mão de um fornecedor apenas...
A integracao transparente do EntityManager não tem preço.
|
Ps: Este post é uma opinião pessoal e NÃO DEVE SER ENCARADO COMO VERDADE ABSOLUTA... então... caso você não concorde... não precisa cortar os pulsos...
------
Controverso Eu ? http://www.go-java.com/blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2007 09:44:51
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
Alémd e ter muito mais de 1% de consultas dinamicas o fato de ter consultas OO faz muita falta no modelo novo.
Eventualmente Criteria vai entrar no EJB3.1, até lá...
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2007 10:20:15
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
chun wrote:Descordo... acho que Entitys do EJB 3 ficaram bem legais.... calro que voce nao tem criteria (puts... quantos % da sua plicação voce monta query dinamica ? 1% ? 2% ? ) e ao contrario das declaracoes aqui... nao fica preso nao... a nao ser que voce USE caracteristicas proprias... se voce usar o padrao... fica tudo compativel (uso hibernate e toplink aqui mudando 1 linha do XML persistence.xml )
Rapaz, se você acha que fazer concatenação de Strings é uma coisa boa e normal, boa sorte. Eu, pessoalmente, detesto.
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2007 10:24:54
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline
|
Como de prática, se alguém não faz, outro faz.
InfoQ wrote:The Spring team is also working on extending the JPA spec to provide a criteria-style API which could be delivered portably across JPA projects using Spring.
A fonte é este artigo: Spring 2 Final Approching with new support for OSGi, JPA, Asynch JMS
Enquanto não sai o Ejb 3.1, a gente continua no spring...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2007 10:31:19
|
chun
GUJ Master
Membro desde: 08/11/2004 15:43:41
Mensagens: 1693
Localização: Curitiba/PR
Offline
|
Maurício Linhares wrote:
chun wrote:Descordo... acho que Entitys do EJB 3 ficaram bem legais.... calro que voce nao tem criteria (puts... quantos % da sua plicação voce monta query dinamica ? 1% ? 2% ? ) e ao contrario das declaracoes aqui... nao fica preso nao... a nao ser que voce USE caracteristicas proprias... se voce usar o padrao... fica tudo compativel (uso hibernate e toplink aqui mudando 1 linha do XML persistence.xml )
Rapaz, se você acha que fazer concatenação de Strings é uma coisa boa e normal, boa sorte. Eu, pessoalmente, detesto.
Eu detesto tmb... mas continuo afirmando que Querys dinamicas são praticamente 1 ou 2% da minha app , entao não costumo fazer tempestade em um copo d'agua... é s´po separar e pronto...
Odeio acessar via JNI as coisas... mais eh 1% de tudo tmb... entao... prefiro conviver com isso a ficar preso a um unico fornecedor.
Na minha opiniao , isso não é motivo suficiente para deixar JPA de lado... ela proporciona uma integracao muito boa... e a vida eh feita de escolhas
|
Ps: Este post é uma opinião pessoal e NÃO DEVE SER ENCARADO COMO VERDADE ABSOLUTA... então... caso você não concorde... não precisa cortar os pulsos...
------
Controverso Eu ? http://www.go-java.com/blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/05/2007 23:00:20
|
RafaelRio
Java Ninja
![[Avatar]](/images/avatar/e81218f96c55d1006352ed0a3b08d790.jpg)
Membro desde: 05/09/2006 06:52:42
Mensagens: 255
Localização: São Paulo
Offline
|
Maurício Linhares wrote: Rapaz, se você acha que fazer concatenação de Strings é uma coisa boa e normal, boa sorte. Eu, pessoalmente, detesto.
A falta da API de criteria no JPA é realmente motivo suficiente pra chorar soluçando!
Mas é possível criar queries dinâmicas sem concatenar strings através de @NamedQueries e @NamedQuery. Ex:
Também é possível criar a query através do método createQuery do EntityManager.
|
Rafael Fiume.
Yes, Nós Temos Bananas
Sun Certified Programmer for the Java Platform, Standard Edition 6
Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 5
Nullius in verba.
"A palavra de nenhum homem será a final."
Lema da Royal Society, associação de cientistas de Londres, em 1660. Entre os seus membros e presidentes esteve Isaac Newton. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/05/2007 01:09:09
|
seufagner
JavaEvangelist
![[Avatar]](/images/avatar/5fd0245f6c9ddbdf3eff0f505975b6a7.jpg)
Membro desde: 06/05/2005 16:33:09
Mensagens: 447
Localização: Rio de Janeiro - RJ
Offline
|
Como o RafaelRio citou, existem maneiras alternativas. Ainda, acho muito purismo usar Criteria se você resolve seu problema de outras formas.
Agora, se na tua aplicação você muda além de parâmetros condicionais, trechos da própria sentença, na minha opinião seu método tá muito "gordo".
"Ah, então vou repetir a Query inteira se quiser acrescentar um GROUP BY ou HAVING diferente para cada caso?"
Bem eu acho no mínimo estranho o cara usar lógica para montar a Query de modo elegante. Cada query no seu lugar, chamada através de, quase sempre, um método que corresponde à sua ação especificamente. Ou talvez verificar se um único método deve ser tão responsável assim.
Na minha opinião criar uma extensão para a API só para evitar concatenações é forçar a barra demais.
[]s amigos!
|
@seufagner
seufagner.com.br
"Simplicidade é a maior forma de sofisticação"
Leonardo Da vinci
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/03/2008 23:15:37
|
marcus.floriano
What is classpath?
Membro desde: 01/05/2007 13:53:40
Mensagens: 7
Offline
|
Apenas para constar que existe solução.
Esse exemplo do Diogo Romeo mostra como fazer.
http://www.nabble.com/Re %C3%BAvidas-sobre-JPA-p15185421.html
|
Marcus Floriano |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/03/2008 00:13:41
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
marcus.floriano wrote:Esse exemplo do Diogo Romeo mostra como fazer.
http://www.nabble.com/Re %C3%BAvidas-sobre-JPA-p15185421.html
E qual é a solução? Usar o Hibernate?
De qualquer forma, eu já tinha mostrado um DAO genérico como esse há bons dois anos atrás -> http://www.guj.com.br/posts/downloadAttach/327.java
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/03/2008 07:28:52
|
marcus.floriano
What is classpath?
Membro desde: 01/05/2007 13:53:40
Mensagens: 7
Offline
|
Maurício, muito bom esse documento, sobre esse assunto do tópico informando que a JPA não tem o Criteria, a especificação JPA não tem o especifica o Criteria (pode me corrigir se estiver errado), mas para trabalhar com JPA temos que utilizar algum mecanismo que implementou a JPA sendo assim utilizamos o Hibernete ou Toplink, certo?
Qual é o problema utilizar o que tem de amais no Hibernet ou no Toplink, pois o tópico desse forum "JPA não tem uma API de Criteria? Que absurdo é esse?" não é verdade conforme o exemplo que mandei e segue o pequeno trecho abaixo:
Estou enganado?
|
Marcus Floriano |
|
|
 |
|
|