Hibernate Anotations

Propaganda
Hibernate Anotations
Fabio Luiz Oenning da Costa¹, Ricardo Minigucci¹
Universidade Paranaense (Unipar)
Paranavaí – PR – Brasil
[email protected]
[email protected]
Resumo. Este artigo apresenta o Hibernate Annotations que é um framework, que se
destaca entre outros detalhes por alterar o banco de dados para outro SGBD e para o
mapeamento objeto/relacional. O mapeamento dos objetos foi simplificado devido à
criação do Hibernate Annotations de forma a reduzir a necessidade de criação de um
arquivo especifico que possibilitava o mapeamento de cada tabela utilizada pelo
banco de dados, com a criação das anotações basta que seja indicada a anotação
necessitada pelo desenvolvedor, para que o pacote seja chamado e descarte a
necessidade de criação de um arquivo de mapeamento, assim esperamos apresentar
essa abordagem neste artigo.
1. Introdução
Linguagens de programação como Java, cada vez mais tem seus conceitos de orientação
a objeto, tratados de forma distribuída, pois bancos de dados orientados a objeto tem
certa limitação se comparando aos relacionais, isso se deve a falta de robustez e
eficiência, que são ocasionados pela manipulação nos formatos dos objetos.
O Hibernate Anotations foi criado para simplificar a comunicação entre um banco
de dados relacional e o modelo de aplicação de objetos por meio de arquivos XML, esse
arquivo é responsável por fazer o mapeamento para as tabelas do banco de dados, se não
tivéssemos esse pacote, seria necessário à criação de arquivos para cada tabela do banco
de dados utilizada.
2. Metodologia
Para realizar este trabalho foi preciso realizar pesquisas em apostilas, artigos e sites da
Internet e livros na web.
3. Desenvolvimento
Este capitulo apresenta o hibernate e algumas anotations.
3.1. Hibernate
É um Framework gratuito utilizado para mapeamento de objeto/relacional, introduzi-o
sua linguagem própria de query (Hibernate Query Language). isso é, converte os
objetos definidos pelo programador em dados distintos no banco de dados, assim o
programador minimiza consideravelmente a quantidade de códigos de acessos que ele
terá que desenvolver para o banco de dados e SQL [Introdução ao Hibernate 2014].
3.2. Vantagens do Hibernate
Ao utilizar o código SQL dentro de uma aplicação Java, pode complicar o mapeamento
de classes do banco de dados relacional, tendo em vista o problema de independência de
plataforma de banco de dados, esse problema pode tornar muito complicado relacionar
os dados.
O Hibernate executa esse papel, distribui o código SQL dentro da nossa
aplicação e dessa forma permiti escolher o tipo de banco de dados enquanto o programa
está em execução, permitindo assim alterar sua base sem que seja necessária a alteração
do código Java.
3.3. Mapeamento Objeto Relacional
A maneira mais utilizada no armazenamento de dados é utilizando um banco de dados
relacional, mas devido ao rápido desenvolvimento que vem passando as linguagens
orientadas a objeto, é necessária à comunicação entre bancos de dados relacionais de
forma mais simples e funcional.
Para que essa interação aconteça, se torna necessária à conversão de objetos em
tabelas e tabelas em objetos, e em alguns casos os dados não são compatíveis (variação
entre os tipos de linguagem e bancos de dados). O mapeamento objeto relacional faz a
conversão entre objetos e linhas de tabelas.
3.4. Annotations
As Anotations foram implementadas no Java 5, e desde então, a maioria das ferramentas
passou a utilizar essas annotations, que são interfaces aplicadas no nível da classe, e de
variáveis e definem os meta-dados relacionados á própria classe, essas annotations
foram adotadas pelo Hibernate e as integrou á parte essencial do framework [Introdução
ao Hibernate 2014].
3.5. Como Utilizar o Hibernate Annotations
Para utilizar o Hibernate Annotations, é preciso fazer o download de sua versão atual
4.3.6 que está no seguinte link http://hibernate.org/orm/.
3.6. Annotations do Hibernate
Session: O objeto Session é aquele que possibilita a comunicação entre a aplicação e a
persistência, através de uma conexão JDBC.
Ele é um objeto leve de ser criado, não deve ter tempo de vida por toda a
aplicação e não é threadsafe. Um objeto Session possui um cache local de objetos
recuperados na sessão. Com ele é possível criar, remover, atualizar e recuperar objetos
persistentes.
SessionFactory: Esse objeto mantém o mapeamento objeto relacional em memória
permite a criação de objetos Session, a partir dos quais os dados são acessados, também
denominado como fábrica de objetos Sessions.
Um objeto SessionFactory é threadsafe, porém deve existir apenas uma
instância dele na aplicação, pois é um objeto muito pesado para ser criado várias vezes
[Hibernate com Anotações 2007].
Configration: Um objeto Configuration é utilizado para fazer as configurações de
inicialização do Hibernate. Com ele, definem-se diversas configurações, como por
exemplo: o driver do banco de dados a ser utilizado, o dialeto, o usuário e senha do
banco, entre outras.
É a partir de uma instância desse objeto que se indica como os mapeamentos
entre classes e tabelas de banco de dados devem ser feitos [Hibernate com Anotações
2007].
Transaction: A Interface Transaction é utilizado para representar uma unidade
indivisível de uma operação de manipulação de dados. autilização dessa interface nas
aplicações que usam Hibernate é opcional [Persistência de dados com Java e Hibernate
Annotations 2009].
Interfaces Criteria e Query: As interfaces Criteria e Query são utilizadas para realizar
as consultas no banco de dados [Hibernate com Anotações 2007].
One-to-One: A anotação One-to-One é utilizado para associar duas entidades, onde uma
não é componente da outra, ao contrário dessa definição em uma associação One-toOne também podemos ter um relacionamento bidirecional.
One-to-Many: A anotação @OneToMany pode ser aplicada para um campo ou
propriedade de uma coleção ou um array representando o "many" da associação.
@JoinColumn: Essa anotação é utilizada para nomearmos a coluna que possui a chaveestrangeira requerida pela associação. Caso ela não seja nomeada essa coluna ira utilizar
o nome do campo.
@TableGenerator: A anotação @TableGenerator sua utilidade é semelhante à anotação
@SequenceGenerator, no entanto, a anotação @TableGenerator manipula uma tabela
padrão no banco de dados para obter valores de chaves primárias, ao invés de usar um
objeto de sequência específica de vendedor.
3.7. Arquitetura do Hibernate
A arquitetura do Hibernate é formada por um conjunto de interfaces, A camada de
negócio fica acima da camada de persistência por atuar como uma cliente da camada de
persistência, as interfaces são classificadas como:
• Session, Transaction e Query; Essas Interfaces são responsáveis por executar
operações de criação, deleção, consulta e atualização no banco de dados.
• Configuration; Essa Interface é utilizada pela aplicação para configurar o
Hibernate.
• Interceptor, Lifecycle e Validatable; Essas Interfaces são as responsáveis por
realizar a interação entre os eventos do Hibernate e a aplicação.
• UserType, CompositeUserType e IdentifierGenerator; Essas Interfaces que
permitem a extensão das funcionalidades de mapeamento do Hibernate.
O Hibernate interage com as APIs existentes no Java: JTA, JNDI e JDBC.
Abaixo a figura-1 representa as principais interfaces que são: Session, SessionFactory,
Transaction, Query e Configuration [Hibernate com Anotações 2007].
Figura 1 - Representa a Arquitetura do Hibernate
4. Considerações Finais
A ferramenta Hibernate é open-source e uma das mais usadas na atualidade para o
mapeamento de banco de dados, tornado por esses motivos uma das preferidas de
muitos desenvolvedores.
Talvez podendo indicar a principal característica, a eliminação do trabalho
repetitivo e tendencioso e a substituição pela orientação a objeto, eliminando o
paradigma estruturado.
Dentre todo esse desenvolvimento, podemos indicar uma desvantagem na
utilização desse framework uma relativa perca de desempenho, apesar que foi
identificado que em alguns casos, essa perca não ocorre.
Sistemas que tem sua parte lógica da aplicação na sua base de dados ou fazem
um uso extensivo de stored e triggers, podem não ter um bom desenvolvimento e
consequentemente tornar seu desempenho decepcionante, apesar de todos os detalhes.
5. Referencias
Fernandes Raphaela Galhardo. Gleydson de A. Ferreira Lima. (2007) Hibernate com
Anotações. Disponivel em:<http://www.futurepages.org/wiki/lib/exe/fetch.php?
media=quickstart:hibernate_anotacoes.pdf> Acesso em: 10/04/2014.
Ortoncelli André Roberto, Carlos Lazarin Jóia Alberto. (2009) Persistência de dados
com Java e Hibernate Annotations. Disponivel em: < http://www.google.com.br/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CB0QFjAA&url=http%3A%2F%2
Fwww.atualizado.com.br%2Fsemfronteiras%2Findex.php%3Foption%3Dcom_docman
%26task%3Ddoc_download%26gid%3D8%26%26Itemid%3D66&ei=75QAVP-2GOr
msASuvYGAAw&usg=AFQjCNEBIe7l3Wy7j4pqNv76W4fgvNVARQ > Acesso em:
26/08/2014.
Apostila Java para Desenvolvimento Web, Capitulo 14. Disponivel em:
<http://www.caelum.com.br/apostila-java-web/uma-introducao-pratica-ao-jpa-comhibernate/> Acesso em: 26/08/2014.
Prates Rubens. (2014) Introdução ao Hibernate. Tradução Lúcia A. Kinoshita. ed.
Novatec Editora LTDA.
Download