Foi lançado hoje (31/03/2009) a versão 3.5.0 do Hibernate, com suporte a algumas coisas novas, das quais com certeza a mais destacada é o suporte a nova versão da Java Persistence API, a JPA 2.
Entre as outras grandes novidades que surgiu com a nova versão do hibernate incluem:
[list]
Introdução do Hibernate annotations, entity manager e envers ao core. Dessa forma, se você precisar usar algum deles, tudo já vai estar lá e pronto.
Melhorias na integraçao com os frameworks de cache de segundo nível.
Suporte a objetos imutáveis
[/list]
Para os que utilizam o Maven em seus projetos, os artefatos já estão disponíveis no repositório da JBoss.
Excelente notícia. O suporte a criteria da jpa2 já estava muito bom no beta-2, todos os testes que havia feito com EclipseLink passavam. Parabéns a equipe do Hibernate por manter o excelente trabalho.
ps: DJemacao, enovad, entre outros, também postaram essa notícia.
[quote=Paulo Silveira]Excelente notícia. O suporte a criteria da jpa2 já estava muito bom no beta-2, todos os testes que havia feito com EclipseLink passavam. Parabéns a equipe do Hibernate por manter o excelente trabalho.
ps: DJemacao, enovad, entre outros, também postaram essa notícia.[/quote]
Fiz o download hibernate aki e vi uma coisa interessante, pelo menos para mim. hhehehehe
vi aki a pasta de documentação e existe varias traduções inclusive para portugues!!!
Achei isso um tanto interessante ja que estou começa a aprender a mexer com hibernate heheheheh
Muda, bastante, escrevi um artigo sobre isso na penultima MundoJava. Realmente esta mais poderosa e mais interessante, mas precisa escrever mais… ainda mais se voce usar o metamodelo estático, que te garante type safety em 99% dos casos. Se usar o modelo baseado em Strings, vai ficar mais curto, mas, assim como a Criteria antiga, não te garante type safety.
Em tempos que muitos questionam pra que tanto type safety, ja que testamos muito o codigo, alguns dizem que muita gente vai preferir usar o modelo baseado em Strings mesmo.
To tentando entender como ficou o suporte a entidades imutáveis, mas não achei muita coisa. Ele injeta via construtor com parâmetros? Injeta nos atributos, mesmo que sejam final? Ainda tenho que ter o construtor sem argumentos?
:arrow: Se vc nao deixar sua classe com o construtor padrao ele nao cria.
Caused by: java.lang.InstantiationException: br.com.caelum.bla.modelo.Modelo_$$_javassist_0
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxy(JavassistLazyInitializer.java:140)
... 10 more
Sim. Mas isso leva a uma coisa feia no seu código…
@Immutable
@Entity
public class Modelo {
@Id @GeneratedValue
private final Integer id;
private final String nome;
private final String descricao;
public Modelo(String nome, String descricao) {
this.id = null; //Esse ja vem null pra nao ficar passando id pro construtor
this.nome = nome;
this.descricao = descricao;
}
//tem q ter esse construtor pra satisfazer o hibernate
Modelo() {
this(null, null);
}
//getters
}
A documentaçao lá sobre essa parte ta bem fraquinha mesmo
Comparei com EclipseLink depois de ter escrito o artigo pra revista, e os dois se comportaram da mesma maneira para varios testes com a nova criteria (eclipselink as vezes gerando queries menores, mas nao necessariamente melhores).