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.

Artigos relacionados