Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate Luis Gustavo Zandarim Soares1, Késsia Rita da Costa Marchi1 1 Universidade Paranaense (Unipar) Paraná – PR – Brasil [email protected], [email protected] Resumo. Este artigo constitui em uma descrição sobre o que é e como funciona o Mapeamento objeto-relacional (ORM), juntamente da ferramenta de persistência Hibernate e apresentando informações básicas sobre o mesmo. O artigo também abrangerá o estudo de caso e como ele funciona para o mapeamento objeto-relacional. 1. Introdução O Hibernate consiste em um poderoso framework utilizado para realizar o ORM (Mapeamento Objeto-Relacional), e como a maior parte de um uma aplicação envolve na criação e manutenção de camadas de persistência, se o modelo de banco de dados sofrer alterações, pode ser muito oneroso realizar as alterações para todo o resto da aplicação, fazendo com que o Hibernate elime esta lacuna [KRAEMER, VOGT 2004]. Com o grande crescimento das demandas de sistemas e mão de obra no mercado de trabalho, o mapeamento objeto-relacional surgiu com intuito de auxiliar os profissionais da área de TI a agilizar seus trabalhos, pois utilizando a técnica de ORM, o programador não necessita preocupar-se com os comandos em SQL (Structured Query Language) para a criação e manipulação do banco de dados, o mesmo é realizado pelo ORM, poupando um grande trabalho e tempo para os programadores e as empresas. O objetivo deste trabalho é explicar e mostrar o que é e como funciona a modelagem objeto-relacional utilizando o framework Hibernate para uma melhor persistência nos dados, com alto desempenho e fácil metodo de manuseio, aboradará também sobre o estudo de caso, sobre o que ele é, como funciona, e qual sua importância para com o mapeamento objeto-relacional. 2. Hibernate "O Hibernate é um framework para mapeamento objeto-relacional para linguagem Java. Na prática, ele é um conjunto de classes, interfaces e arquivos de configuração préacabados que permitem a criação de uma camada de serviço capaz de abstrair a existência do banco de dados para sistemas Java" [MRACK 2006]. Lançado em 2001, o Hibernate foi criado por desenvolvedores Java, juntamente com a liderança de Gavin King, fundador do projeto Hibernate. Após sua criação, a empresa JBoss Inc, contratou os principais desenvolvedores do framework para realizar o suporte do mesmo. A principal proposta do Hibernate é prover aos desenvolvedores uma maneira de realizar o mapeamento de uma forma transparente, isto é, através da criação de classes, como se não houvesse persistência relacional [GONÇALVES 2008]. Como o framework Hibernate utiliza sua própria linguagem SQL, o HQL (Hibernate Query Language), o programador não necessita de escrever muitos códigos SQL para acesso ao banco de dados, pois o HQL possui um considerável aumento na velocidade de desenvolvimento, podendo mudar a qualquer momento o SGDB (Sistema de Gerenciamento de Banco de Dados) utilizado [FRAGOSO 2008]. Segundo LUCKOW e MELO (2010), vale a pena destacar que o framework Hibernate possui três frentes de software, elas são: Hibernate Core: conhecido como Hibernate 03, é a base para todo o conjuntos de persistência que o Hibernate oferece, contendo um API (Application Programming Interface) nativa e matadados de mapeamento guardados em arquivos XML (Extensible Markup Language). Possui linguagem própria de SQL, o HQL e também possui interfaces para realização de consultas. Hibernate Annotations: a nova maneira de realizar o mapeamento de objeto/relacional utilizando annotations, um tipo de tags especiais estilo JavaDoc, trazendo como vantagem a grande redução de linhas de códigos para realizar esse processo de mapeamento comparado o XML. Hibernate EntityManager: é a camada que atende aos conceitos de programação de interfaces e funcionalidades de consultas, fazendo com que a interface leia o metadado ORM de uma entidade e realiza operações de persistência. A figura 01, descreve simplificadamente como funciona a arquitetura do Hibernate e demonstra duas técnicas de mapeamento, XML e annotations. Figura 01. Como funciona o Hibernate [SMOLENAARS, 2005] 3. Mapeamento Objeto-Relacional utilizando o Hibernate O mapeamento objeto-relacional (ORM), é a base teórica sobre a qual podemos mapear objetos em tabelas de bancos de dados relacionais, visando reduzir a impedância existente entre os dois paradigmas durante o desenvolvimento de software. Quando se mapeia os dados do modelo relacional cria-se o efeito de que o banco de dados seja orientado a objetos, de modo que o programador não precisa se preocupar com a disposição dos dados nas tabelas e se focar na manipulação de objetos e nos problemas de negócio (BAUER, KING 2007). A figura 02, apresenta como funciona o mapeamento objeto-relacional, a tabela é representada pela classe aluno, as colunas são os atributos da classe e a linhas da tabela como instância da classe. Figura 02. Exemplo de Mapeamento Objeto-Relacional [MISTRON, 2009] 4. Estudo de Caso Para ser efetuada a conexão do Hibernate com o banco de dados, é necessario a criação de uma Unidade de Persistência no projeto, a mesma solicita que seja informado dados para que ela possa efetuar a conexão, dados como o provedor de persistência que é o framework de persistência a ser utilizado e fonte de dados para que ele possa realizar a conexão com o banco de dados. Figura 03. Exemplo de conexão do Hibernate com o banco de dados. As annotations, nova maneira de mapeamento objeto-relacional utiliza tags para realizar o mapeamento, os simbolos no código que se iniciem com @ (arroba) é uma annotation. As annotations auxiliam o Hibernate em como se deve criar os atributos na tabela do banco de dados, como por exemplo o @Entity que declara uma entidade do tipo relacional como uma tabela, porém ainda continua sendo uma classe Java, também tempo o @id que define o identificador da tabela e annotations utilizada para realizar associações, tais como @ManyToOne que define um atributo de muitos para um ou a annotation @OneToMany que define um atributo de um para muitos. Figura 03. Exemplo de classe de entidade e anotações 5. Metodologia Este artigo foi desenvolvido utilizando de livros, artigos e páginas da web, pesquisando a fundo e fazendo uma grande revisão do conteúdo pesquisado e logo após unificando as revisões para a elaboração do projeto aqui escrito, Imagens do código fonte do trabalho de conclusão de curso (Aplicação de Tecnologia Java na Produção de Software de Varejo) foram utilizadas para ilustrar parte do artigo para mostrar claramente ao leitor como funciona a utilização do Hibernate. 6. Conclusão Com a grande competitividade no mercado de trabalho nos dias atuais, as empresas de TI precisam que seus softwares sejam de maior qualidade em um menor espaço de tempo e atendendo as necessidades de seus clientes, e é por isso que o uso de framework é tão importante na elaboração de projetos hoje em dia. Podemos então concluir que o framework Hibernate é uma ferramenta que auxilia em muito na produção dos softwares, proporcianando um melhor desempenho e qualidade, tornando também uma ótima opção de ferramenta pelo fato de que o Hibernate não utiliza o uso do SQL para criação e manipulação do banco de dados, trazendo uma linguagem própria e que agiliza na criação e manipulação do mesmo. Devido sua grande evolução nos últimos anos, o Hibernate possui grandes probabilidades de crescer muito e se tornar uma ferramenta ainda melhor para os programadores e empresas que utilizam dessa tecnologia para auxiliar os mesmos na produção de seus projetos. Referências Bauer, C.; King, G. (2007) "Java Persistence com Hibernate" 1° Edição, Editora Ciência Moderna Ltda. Rio de Janeiro, Brasil. FRAGOSO, R, R., (2008) "O que é Hibernate", http://webcache.googleusercontent.com/search?q=cache:OBJuAYy_faMJ:www.dicas l.com.br/arquivo/o_que_e_hibernate.php+hybernate+HQL+fragoso+2008&cd=1&hl =pt-BR&ct=clnk&gl=br&source=www.google.com.br#.Ufb_hI2KLS4, acessado em 29 de Julho de 2013. GONÇALVES, E. "Desenvolvendo Aplicações Web com JSP, Servlet, JavaServerFaces, Hibernate, EJB 3 Persistence e Ajax", Rio de Janeiro: Ciência Moderna Ltda., 2008. Kraemer, Fabiano.; Vogt, Jerônimo Jardel. "Hibernate, um Robusto Framework de Persistência Objeto Relacional", 18 f. Trabalho de Conclusão da Disciplina Programação com Objetos Distribuídos (especialização) - Universidade Federal do Rio Grande do Sul. Porto Alegre, 2004. Luckow, D. H.; Melo, A. A. (2010) "Programação Java para Web", Editora Novatec. São Paulo, Brasil. MISTRON, J. "Hibernate: Framework de Mapeamento Objeto-Relacional", 53 f. Monografia para obtenção de título de Técnólogo em Processamento de Dados. Faculdade de Tecnologia de Taquaritinga. Taquaritinga. São Paulo, 2009. MRACK, M. (2006) "Hibernate, Uma visão geral sobre o framework padrão de fato para mapeamento objeto-relacional", http://www.slideshare.net/mmrack/workshophibernate-com-comentarios, acessado em 29 de Julho de 2013. SMOLENARS, D. C. "Questionários Dinâmicos", 2005.