Na “Public Review” da JSR317 – que trata da JPA 2.0 – foi adicionado suporte a Criteria API na especificação. Pode ser que em menos de dois anos possamos evoluir nessa especificação e usar menos as implementações, minha esperança é que melhorem pelo menos até a versão final, programada para o inÃcio de 2009.
Como sempre criaram uma nomenclatura totalmente diferente para entidades da API, dificultando o entendimento da comunidade com anos de uso da única implementação que possuÃa essa API: Hibernate. Comparem a API de Criteria do Hibernate com a API de Criteria da Spec. Ok, podemos aceitar isso, polÃtica…
Faltou muita coisa ainda, mas parece que estão trabalhando para melhorar até a versão final, pelo visto DELETE_ORPHAN vai sair de alguma forma:
@Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface OneToMany { Class targetEntity() default void.class; CascadeType[] cascade() default {}; FetchType fetch() default LAZY; String mappedBy() default "";Â Â Â boolean orphanRemoval() default false; } |
Nota para os leitores:
Open Issue: We also discussed the alternative of introducing a separate annotation for the orphanRemoval functionality and the alternative of introducing a REMOVE_ORPHAN cascade
option. We would welcome feedback on the form that this metadata should take.
Não encontrei nada sobre como manipular as estratégias de fetching – que é primordial – nos relacionamentos como temos no Hibernate: Select fetching, Subselect fetching, Join fetching e Batch fetching. Nem a API de Criteria possui estratégia com FetchMode, apenas uma “Issue” aberta para a interface FetchJoinObject que deverá trabalhar isso, eu espero.
Ainda assim continuamos indicando o uso do Hibernate direto ao invés da especificação até que a especificação seja estável o suficiente com features decentes para um desenvolvimento sério em Java. A API de Criteria da implementação Hibernate continua ainda muito superior principalmente se você precisar de consultas um pouco mais avançadas.
Confiram o material e decidam.
Categories: Engenharia de Software, Linguagens, Orientação a Objetos ~ ~ Trackback
December 11th, 2008 at 11:54 am
Tomara realmente que melhorem a versão da especificação até o seu lançamento, pois se JPA2.0 continuar tão fraquinha quanto o seu predecessor então as implementações continuarão reinando como é o ocorrido hoje em dia.
December 11th, 2008 at 2:49 pm
Acho que vai demorar um pouco para a JPA “substituir” o Hibernate…mas quem sabe, claro que seria bem mais interessante usar a própria Spec, mas enquanto isso….Hibernate
Bom post.