Criteria na JPA 2.0: Public Review!

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.

2 thoughts on “Criteria na JPA 2.0: Public Review!

  1. Rafael Ponte

    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.

  2. Handerson Frota

    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.

Comments are closed.