Novidades do Hibernate 4

Veja neste artigo quais são as novidades do Hibernate 4 e as principais diferenças para o Hibernate 3. Também veremos como podemos adquiri-lo e quais são as suas principais funcionalidades.

O Hibernate possui diversos projetos que ocorrem em paralelo ao Hibernate e que podem ser incorporados ao framework tornando-o ainda mais enxuto. Alguns desses projetos são o Hibernate Search, Hibernate OGM e Hibernate Validator.

Muitos projetos ainda utilizam o Hibernate 3, no entanto, o novo Hibernate 4 já foi lançado e passou por diversas melhorias que podem facilitar e melhorar a vida dos desenvolvedores. A partir de agora o Hibernate será continuado a partir da versão 4.x e, portanto, a última versão do Hibernate 3.x foi a versão 3.6.

No restante do artigo estaremos verificando melhor quais são as melhorias e novidades lançadas na recente versão do Hibernate 4.

Novidades

Diversas funcionalidades foram introduzidas na versão principal do Hibernate 4, entre elas destacam-se:

Além disso, a nova versão do Hibernate já possui suporte para JPA 2.1 e tem entre as suas melhorias mais importantes um grande número de correções de antigos problemas de performance que ocorriam no framework.

Arquivos de configuração e buildSessionFactory

Uma situação interessante é que ainda podemos usar o DTD do Hibernate 3.0, pois ele não mudou da versão 3 para a versão 4, o DTD continua o mesmo. Dessa forma, ainda podemos utilizar o mesmo arquivo de configuração do Hibernate apontando para o DTD da versão 3 que pode ser encontrado em http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd

No entanto, se ainda utilizarmos o buildSessionFactory, usado nas aplicações do Hibernate 3 para criarmos um SessionFactory, teremos uma mensagem informando que o método está deprecado. Essa é a grande alteração do Hibernate 4 em relação ao seu antecessor. Anteriormente nós criávamos um SessionFactory como na Listagem 1.

Listagem 1. Criando SessionFactory com buildSessionFactory().

SessionFactory sessionFactory = new Configuration() .configure() .buildSessionFactory();

Agora na versão 4 do Hibernate devemos usar como o exemplo da Listagem 2, utilizando ServiceRegistry.

Listagem 2. Nova forma de criarmos um SessionFactory.

Configuration conf = new Configuration(); conf.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings (conf.getProperties()).buildServiceRegistry(); SessionFactory sessionFactory = configuration.buildSessionFactory (serviceRegistry);

Outra forma é utilizando um MetadataSources onde eventualmente podemos adicionar recursos, classes anotadas, entre outros, similar ao Configuration. A partir do MetadaSources obtemos um Metadata e então conseguimos um SessionFactory. O exemplo da Listagem 3 demonstra a utilização.

Listagem 3. Criando uma SessionFactory com MetadataSources.

ServiceRegistry serviceRegistry = new ServiceRegistryBuilder() .configure().buildServiceRegistry(); MetadataSources metadataSources = new MetadataSources(serviceRegistry); metadataSources.addResource("exemplo.hbm.xml") .addAnnotatedClass(SuaEntidade.class); Metadata metadata = metadataSources.buildMetadata(); SessionFactory sessionFactory = metadata.buildSessionFactory();

O grande ponto do ServiceResgistry é que ele é uma nova forma do Hibernate gerenciar os seus serviços, pois Services são classes que oferecem muitas funcionalidades ao Hibernate como ClassLoader, ConnectionProvider (conexão com um BD), e muitas outras funcionalidades. Portanto, agora todos os serviços possuem uma interface, facilitando modificações pelo desenvolvedor na forma como o Hibernate realiza algumas funcionalidades. Dessa forma, nossas classes precisariam apenas implementar a interface de serviço do Hibernate.

Além do buildSessionFactory as classes de Configuration: org.hibernate.cfg.Configuration e AnnotationConfiguration também estão deprecadas.

Vale ressaltar que na documentação oficial em alguns pontos ainda encontramos a criação de SessionFactory da forma antiga. Provavelmente esta parte da documentação não foi atualizada e deve ser normalizada na próxima versão.

Suporte a Multi-Tenancy

Um modelo multi-tenancy nada mais é do que o compartilhamento de recursos físicos para clientes ou empresas diferentes, mas ao mesmo tempo permite-se que eles fiquem logicamente isolados. Um Multi-Tenancy pode ser implementado de algumas formas como: Instâncias de bancos separadas com cada tenant com a sua própria instância de banco, schema separados com cada tenant compartilhando o mesmo banco físico, mas com cada um deles com seu próprio schema ou ainda pode-se implementar o Multi-Tenancy através de particionamento onde utiliza-se o mesmo banco físico e o mesmo schema.

Anotações nas Entidades

A boa notícia para os projetos que utilizam as versões anteriores do Hibernate é que as anotações das entidades não possuem alterações. Como o Hibernate utiliza as anotações definidas na especificação JPA e a JPA não possui alterações o Hibernate também não passou por alterações. As anotações específicas do Hibernate também não possuem alterações nas anotações.

Obtendo o Hibernate 4

O Hibernate está disponível no SourceForge nos formatos ZIP e TGZ. Essa versão 4 contém os JARs necessários, documentação, código-fonte e outros utilitários. O download oficial está disponível no link http://sourceforge.net/projects/hibernate/files/hibernate4/.

Avaliando o Pacote do Hibernate 4

Após fazer o download do Hibernate 4, podemos notar que temos uma hierarquia de pastas no pacote.

As funcionalidades que usaremos do Hibernate encontram-se na pasta lib que possui os seguintes artefatos:

No diretório principal do Hibernate temos também a pasta projects que possui outros artefatos que o Hibernate disponibiliza aos desenvolvedores, são eles:

Com isso, neste artigo vimos quais são algumas das novidades do Hibernate 4 como ServiceRegistry, Multi-Tenancy e melhorias internas. Também vimos quais as suas principais diferenças em relação ao Hibernate 3, principalmente quanto ao buildSession(), e as principais funcionalidades trazidas no seu pacote.

Para finalizar, vale uma dica para aqueles que usam JBOSS. Aqueles que adquirirem o servidor de aplicação JBOSS versão 7.1 já ganharão de praxe a nova versão do Hibernate.

Bibliografia

[1]Hibernate - JBoss Community, disponível em www.hibernate.org/

[2]Documentação de Referência Hibernate, disponível em https://docs.jboss.org/hibernate/core/3.6/reference/pt-BR/html/index.htmlhttp://www.hibernate.org/hib_docs/v3/reference/en/html/queryhql.html

[3] Introdução ao Hibernate, disponível em http://hibernate.javabeat.net/articles/2007/05/hibernate-orm-framework-introduction/

[4] Jeff Linwood and Dave Minter. An introduction to persistence using Hibernate 3.5, Second Edition. Apress.

[5] Steve Perkins. Hibernate Search by Example: Explore the Hibernate Search system and use its extraordinary search features in your own applications. Packt Publishing.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados