Você está na página 1de 5

Relatório sobre o Hibernate

Karen Cristina Violim1 , Santiago Molina1


1
Campus Paranavaı́ - Instituto Federal do Paraná (IFPR)
Paranavaı́ - PR - Brasil.
{karenifpr@gmail.com, santiago.molina493@gmail.com}

1. Introdução
Atualmente, a maioria das aplicações utiliza uma linguagem orientada a objetos na
construção do software, e um banco de dados relacional para a persistência dos dados.
Um grande problema enfrentado pelos desenvolvedores que trabalham com linguagem
orientada a objetos é o mapeamento desses objetos em banco de dados relacionais.
Dessa forma, desenvolvedores necessitam criar mecanismos para converter dados
em objetos e vice-versa, o que acaba desvirtuando-o do seu foco principal e da grande
expectativa do cliente, que é o software final.
Para juntar os dois modelos em uma aplicação é necessário entendê-los e conhecer
suas diferenças. E, principalmente, é fundamental entender o processo de mapear objetos
para o modelo relacional e como implementar esse mapeamento.

2. Framework Hibernate
O Hibernate é a solução ORM Java que consiste em uma ferramenta para realizar o ma-
peamento objeto-relacional de forma completa. A tecnologia segue a especificação JPA
(Java Persistence API), que trata de entidades, mapeamentos, interfaces para gerenciar a
persistência e linguagem de consulta (LUCKOW e MELO, 2010).
O Hibernate funciona como um intermediário entre a interação do aplicativo com
o banco de dados relacional, assim o desenvolvedor poderá se concentrar no problema do
negócio a ser trabalhado. A solução também não exige a obediência às regras especı́ficas
do Hibernate e se integra facilmente aos aplicativos novos e existentes, não requerendo
mudanças bruscas no restante da aplicação. (BAUER e KING, 2005).
A arquitetura do Hibernate é baseada em interfaces de programação. Conforme
Bauer e Kink (2005), tais interfaces podem ser classificadas como:
• Interfaces chamadas por aplicativos para executar operações CRUD básicas e de
consulta. Essas interfaces são o ponto principal da lógica de negócios de aplicati-
vos do Hibernate, são elas: Session, Transaction e Query;
• Interfaces chamadas pelo código de infraestrutura do aplicativo para configurar o
Hibernate, que incluem principalmente a interface Configuration;
• Interfaces call-back, que permitem a reação do aplicativo aos eventos que vierem
a ocorrer dentro do Hibernate;
• Interfaces que permitem estender as funcionalidades de mapeamento do Hiber-
nate, como UserType, CompositeUserType e IdentifierGenerator.
A Figura 1 apresenta o esquema de alto nı́vel da arquitetura do Hibernate. O
diagrama mostra a relação do mesmo com a aplicação e o banco de dados, bem como sua
configuração e propriedades necessárias para a persistência dos dados.
Figura 1. Visão geral de alto nı́vel da arquitetura do Hibernate.

A tecnologia Hibernate suporta muitas abordagens e a Figura 2 apresenta sua


arquitetura compreensiva, onde os detalhes da aplicação são abstraı́dos e especificados
pelo Hibernate.

Figura 2. Visão geral de alto nı́vel da arquitetura compreensiva do Hibernate.

Esse diagrama está divido basicamente em três camadas:


• Aplicação, onde está presente a lógica de negócio;
• Camada de Persistência, onde se encontram as propriedades do Hibernate e;
• Banco de dados, onde finalmente os dados são persistidos.
É importante que se conheça o conceito das interfaces presentes na camada de
persistência do diagrama:
• Session: Principal interface usada pelos aplicativos do Hibernate. É onde o Hi-
bernate é iniciado para a realização de operações CRUD, execução de consultas,
controle de transações etc. Essa interface é responsável pelo gerenciamento de
estados dos objetos;
• SessionFactory: Fornece ao aplicativo instâncias da interface Session. Realiza
ainda o armazenamento de instruções SQL e metadados de mapeamento utilizados
pelo Hibernate em tempo de execução;
• Transaction: Realiza a tarefa de abstrair o código do aplicativo do usuário que
implementaria a transação subjacente. Tal abstração permite o controle dos li-
mites de transações pelo aplicativo, mantendo a portabilidade dos aplicativos do
Hibernate mesmo entre ambientes de execução distintos. A interface Transaction
é opcional;
• TransactionFactory: Fornece instâncias da interface Transaction. A interface é
opcional;
• ConnectionProvider:Consiste numa fábrica de conexões JDBC, abstraindo Dri-
verManager adjacentes da aplicação. Também é opcional.
Em aplicações web podemos integrar o Hibernate através do Spring MVC para
trabalhar com o mapeamento e persistência dos objetos no banco de dados, basta adicionar
as dependências do Hibernate e do banco de dados que será utilizado no Maven para que a
aplicação possa se comunicar. Para descrever este processo demonstraremos um exemplo
básico do funcionamento do Hibernate. A figura 3 mostra a classe que será utilizada para
o mapeamento dos objetos no banco de dados.

Figura 3. Criação da classe Funcionário.

Em seguida inserimos os dados referente aos objetos da classe Funcionário, con-


forme exemplo abaixo.

Figura 4. Instanciando os objetos da classe.

Agora precisamos adicionar as dependências do Hibernate e do banco de dados


PostgreSQL no arquivo pom.xml do projeto para que o Maven possa baixar os pacotes
pertinentes de cada dependência.

Figura 5. Dependências necessárias.

Contudo, para que o Hibernate possa funcionar precisamos configurar o JPA para
que o mesmo possa fazer o mapeamento das classes e entidades do projeto, para isso
precisamos criar um arquivo chamado persistence.xml dentro da pasta chamada “META-
INF”, com isso o Spring conseguirá se comunicar com o banco de dados para persistir os
dados. A figura 6 mostra a configuração do arquivo persistence.xml.

Figura 6. Configuração do arquivo.

Por último precisamos mapear a classe Funcionario com a anotação @Entity, desta
forma o framework entenderá que todos os atributos desta classe serão mapeados e per-
sistidos no banco de dados quando os mesmos forem instanciados na classe principal da
aplicação.
Figura 7. Mapeamento da Classe.

3. Conclusão
As linguagens de programação tendem a evoluir de forma muito mais rápida que os Ban-
cos de Dados.Essa evolução provoca incompatibilidades entre os paradigmas relacionais
e orientado a objetos. O Hibernate foi construı́do para contornar e gerenciar essa incom-
patibilidade. Conforme observado, passamos a nos concentrar em nossa aplicação com o
gerenciamento de objetos e não mais com o de registros.
A persistência de dados proporcionada pelo Hibernate nos permite concluir que
os desenvolvedores Java podem contar com mais uma funcionalidade que fará com que
aplicativos possam ser criados de forma mais rápida, mantendo sua qualidade, reduzindo
assim o custo de aplicações, e possibilitando que essa linguagem possa adquirir cada vez
mais espaço no mercado.

4. Referencias Bibliográficas
Persistência de dados com a tecnologia ORM Hibernate
https://www.devmedia.com.br/persistencia-de-dados-com-a-tecnologia-orm-
hibernate/32840
Hibernate na Web
https://www.devmedia.com.br/hibernate-na-web/8781
Tutorial definitivo: Tudo o que você precisa para começar bem com JPA
https://blog.algaworks.com/tutorial-jpa/
Documentaç ão de Referência Hibernate. Maio de 2011
https://docs.jboss.org/hibernate/core/3.6/reference/pt-BR/html_single
Bauer, Christian, King, Gavin
Hibernate em ação. Rio de Janeiro: Ciência Moderna, 2005.

Você também pode gostar