Minha Opinião sobre a JPA

junho 29, 2007 às 12:01 am | Publicado em Java, JEE | 2 Comentários

A java persistence API ou simplesmente JPA foi lançada como uma das grandes novidades do Java EE 5. A idéia de criar uma especificação para frameworks ORM é bem interessante e foi muito bem aceita por toda a comunidade.

Mas nem tudo é maravilha. Eu esperava muito mais da API e hoje a considero como um subconjunto do hibernate. Muitas funcionalidades interessantes que o hibernate oferece não fazem parte da especificação, como a API de Criteria.

Quem já usa o hibernate não vai estranhar a mudança para a JPA. Como o hibernate já permitia que a classes fossem mapeadas com as anotações do JPA, a mudança fica em alterar as interfaces utilizadas, como exemplo Session por EntityManager.

Pra falar que não achei nada de interessante na JPA, os nomes dos métodos ficaram mais interessantes. Basta olhar para um entityManager.find(xx) ou entityManager.persist(xx) para saber o que ele faz. 🙂

Acho que a grande prova de que a API está incompleta e imatura é o fato de permitir acessar o provider utilizado. O provider deveria ser abstraído e sempre ser utilizado através das interfaces do JPA.

Se você é preguiçoso como eu e não gosta de escrever HQL ou JPAQL, pode fazer isso:

jpa_1.jpg

É isso mesmo que você está vendo, chamando o método getDelegate() é possível recuperar o provider que está sendo utilizado, como exemplo uma Session do hibernate e executar uma criteria. Parece interessante mais isso é muito perigoso e quebra umas dos princípios da JPA, a independência de um provider.

Resumindo, vou continuar com o Hibernate em meus projetos e esperar a versão 2.0 da JPA, onde está sendo prometido uma API parecida com a Criteria além de outras anotações bem interessantes que hoje só existe no Hibernate.

E você, o que achou da JPA???

Anúncios

2 Comentários »

RSS feed for comments on this post. TrackBack URI

  1. Concordo com o post… mas segure as pontas que a versão 2.0 do JPA vem aí pra suprir essas e outras faltas! Quer dizer, o “vem aí” significa que esse dia chegará, sabe-se lá quando 😀

    []s

  2. Acho que voce esta exagerando quanto ao getDelagate() , o PROPRIO HIBERNATE sempre foi apresentado como “uma solução, e não uma bala de PRATA” , esse negocio de “independencia 100% de implementacao” eh pura balela… as vezes voce tem 98% do seu projeto usando JPA puro… e PRECISA acessar uma funcionalidade que só tem no hibernate… o que vc faz ? quebra a compatibilidade em 2% da aplicação… (onde voce vai precisar reescrever quando trocar de provider… e isso SE voce trocar…), odeio especificações que te prendem a ela… e não dão escapatoria em alguns casos… quer um exemplo ? ejb 2.x…. Bom e tem outra… JPA permite querys nativas… assim como hibernate… e isso tmb quebra a ideia de ser “universal” para banco de dados… entao… cada caso eh um caso 🙂

    O legal do JPA é que ele padroniza (ou tenta) algo que eh uma ZONA entre os providers… cada um faz como quer… e quando voce esta num ambiente gerenciado (Container) voce só tem a agradecer 🙂 pois JPA integra-se como uma luva em EJB 5… entao… sejamos menos xiitas 🙂


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Blog no WordPress.com.
Entries e comentários feeds.

%d blogueiros gostam disto: