Lançado Hibernate 3.5.0 suportando a JPA2

22 respostas
Adriano_Almeida

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.

Para saber mais: http://in.relation.to/Bloggers/Hibernate350FinalRelease

22 Respostas

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.

Felagund

Achei que era 1º de abril :stuck_out_tongue:

overkill

Tive que olhar o maven pra crer ! :):slight_smile:

fujioka

Excelente! Também tive que ver para crer…

Alessandro_Lazarotti

Rock! Notícia bem aguardada.

peerless

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.

Muda muita coisa do Criteria do hibernate?

[]s

Andr_Heidi_Moriya

Olá Pessoal,

Viu como faz para baixa o hibernate do site?
naum to axando o link de como fazer. hehehehehe
Eu axei um arquivo .jar aki mas naum sei se é esse

valow

gledson85

Andr?Heidi Moriya:
Olá Pessoal,

Viu como faz para baixa o hibernate do site?
naum to axando o link de como fazer. hehehehehe
Eu axei um arquivo .jar aki mas naum sei se é esse

valow


http://sourceforge.net/projects/hibernate/files/hibernate3/

Este link tá ok!

t+

Andr_Heidi_Moriya

brigaaaduuuuuuuuuuuuuuuu!!!

:lol: :lol:

Andr_Heidi_Moriya

Pessoal,

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

Paulo_Silveira

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.

sergiolopes

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?

Não achei nada a respeito além disso:

http://docs.jboss.org/hibernate/core/3.5/reference/en-US/html_single/#readonly

B

Ótima notícia!!! :slight_smile:

Adriano_Almeida

: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 :frowning:

[]'s

LPJava

noticia boa, agora é so testar. presente de pascoa!

joaosouza

Show de Bola…Ótima Notícia !!!

chun

Alguem já fez um comparativo dele com o eclipselink ?

Paulo_Silveira

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).

Alias, cheguei ate a postar um bug no EclipseLink quando escrevi o artigo, e eles já comitaram um patch (precisa logar):
https://bugs.eclipse.org/bugs/show_bug.cgi?id=297385

fabiozoroastro

Só para constar: A data informada na abertura do tópico está errada. 31/03/2010

gabrielmskate

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 :frowning:

[]'s[/quote]

Eu fiz um teste utilizando uma Entidade imutável com o Hibernate e VRaptor (com o IOGI: http://www.guj.com.br/posts/list/208491.java#1059421), e ele também funciona com o construtor privado.
Usando o exemplo dessa classe privada ficou assim:

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
	private Modelo() {
		this(null, null);
	}
gabrielmskate

OPA!!!
continuei testando, e deu erro com o contrutor privado quando eu chamo o método:

session.load(Selecao.class, id)

Deu o erro:

INFO [DefaultLoadEventListener] Error performing load command
org.hibernate.HibernateException: Javassist Enhancement failed: main.java.br.com.haw.bpe.modelo.Selecao
	at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxy(JavassistLazyInitializer.java:143)
	at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.getProxy(JavassistProxyFactory.java:72)
	at org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:634)
	at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3713)
	at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:360)
	at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:281)
	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1080)
	at org.hibernate.impl.SessionImpl.load(SessionImpl.java:977)
	at org.hibernate.impl.SessionImpl.load(SessionImpl.java:970)
	at main.java.br.com.haw.bpe.dao.SelecaoDao.buscaPorId(SelecaoDao.java:39)
	at main.java.br.com.haw.bpe.dao.SelecaoDao.buscaPorId(SelecaoDao.java:1)
	at main.java.br.com.haw.bpe.controle.SelecaoController.editar(SelecaoController.java:50)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.InstantiationException: main.java.br.com.haw.bpe.modelo.Selecao_$$_javassist_0
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxy(JavassistLazyInitializer.java:140)
	... 54 more
flaviorgiron

Olá

Fiquei desencontrado aki ao ler o “2009” pensei que ressuscitaram o topico

Boa Notícia. Show de Bola.

Forte Abraço

Criado 1 de abril de 2010
Ultima resposta 8 de jun. de 2010
Respostas 22
Participantes 17