Ontem saiu a final draft da JPA 2.0. A partir de agora as mudanças devem ser mínimas.
http://jcp.org/en/jsr/detail?id=317
Sem duvida a JPA é uma das especificações mais queridas pelos desenvolvedores, em especial pela sua proximidade ao hibernate, facilidade de uso e poder. O capítulo 6 define a tão esperada Criteria, herdada do hibernate, porém com mudanças pensando em maximizar a característica de “fluent interface”. Gavin King adicionou uma forma de poder dar type safety não só para o resultado da criteria, mas sim para todo o processo de criação da criteria. Isso vai permitir que um código como:
session.createCriteria(Produto.class).add(Restrictions.gt("preco", 100)).addOrder("data")).list();
Vire algo typesafe:
query.where(preco.greaterThen(100)).orderBy(data);
Repare a ausencia das aspas… essas palavras não são Strings. Obviamente as variáveis produto (de onde gerariamos a query, ai ausente), preco e data precisarão ser incializadas. Como elas definem o metamodelo, podem e devem ser cacheadas (por uma questao ate de repeticao de codigo)… Para evitar essa repetição eles sugerem o uso da geração de código, onde uma classe será produzida de alguma forma para guardar uma série de constantes. O mesmo recurso é usado para joins e afins.
Algumas pessoas podem nao gostar da ideia, e preferir a maneira mais pratica “string oriented”, e a API ainda permite isso.
Mais informações:
http://in.relation.to/Bloggers/ATypesafeCriteriaQueryAPIForJPA



