HIBERNATE EM APLICAÇÃO JAVA WEB Raul Victtor Barbosa Claudino¹, Ricardo Ribeiro Rufino¹ ¹Universidade Paranaense (Unipar) Paranavaí – PR – Brasil [email protected], [email protected] Resumo: Este trabalho visa mostrar o conceito e a estrutura usada pelo framework Hibernate, com o objetivo de citar algumas de suas funcionalidades e especificações, além de mencionar algumas vantagens e desvantagens, baseandose em artigos, sites e documentos especializados no assunto. O framework pesquisado se mostrou um excelente auxilio no desenvolvimento de aplicações. 1. Introdução Bauer e King [Bauer; King, 2005] explicam que o Hibernate é um framework de persistência que tem como função armazenar objetos Java em bases de dados relacionais ou fornecer uma visão orientada a objetos de dados relacionais existentes. Isso só é possível pela utilização de arquivos de configuração XML que a framework usa para mapear os dados contidos em uma base de dados relacional, para os atributos de uma classe Java. O Hibernate é um framework de mapeamento objeto relacional para aplicações Java, ou seja, é uma ferramenta para mapear classes Java em tabelas do banco de dados e vice-versa. É bastante poderoso e dá suporte ao mapeamento de associações entre objetos, herança, polimorfismo, composição e coleções [Magalhães; Da Silva, 2013]. O Hibernate não apresenta apenas a função de realizar o mapeamento objeto relacional, mais também disponibiliza um poderoso mecanismo de consulta de dados, permitindo uma redução considerável no tempo de desenvolvimento da aplicação. 2. Metodologia Este trabalho foi realizado a partir da leitura e revisão de artigos científicos, sites da internet especializados no tema, trabalhos de conclusão de curso e livros que juntos a uma analise apurada sobre o tema, formaram um material elaborado que auxilia no desenvolvimento, e em um melhor entendimento do assunto escolhido. 3. Arquitetura O Hibernate apresenta uma arquitetura formada basicamente por um conjunto de interfaces. A Figura 1 tem como função apresentar as interfaces mais importantes nas camadas de negócio e persistência. A camada de negócio aparece acima da camada de persistência por atuar como cliente da mesma. É importante informar que algumas aplicações podem não ter a separação clara entre as camadas de negócio e de persistência. De acordo com a Figura 1, as interfaces são classificadas como: • Interfaces responsáveis por operações de criação, deleção, consulta e atualização no banco de dados: Session, Transaction e Query; • Interface utilizada pela aplicação para configurar o Hibernate: Configuration; • Interfaces responsáveis por realizar a interação entre os eventos do Hibernate e a aplicação: Interceptor, Lifecycle e Validatable. • Interfaces que permitem a extensão das funcionalidades de mapeamento do Hibernate: UserType, CompositeUserType, IdentifierGenerator. O Hibernate também interage com APIs já existentes do Java: JTA, JNDI e JDBC [Fernandes; Lima, 2007]. Figura 1: Arquitetura do Hibernate [Fernandes; Lima, 2007]. De todas as interfaces apresentadas na Figura 1, as principais são: Session, SessionFactory, Transaction, Query, Configuration. 3.1 Session O objeto Session tem a função de facilitar a comunicação da aplicação com a persistência, através de uma conexão JDBC. É um objeto leve de ser criado, não deve ter um tempo de vida que se estenda por toda a aplicação, por não se tratar de um threadsafe. Um Session possui um cache local de objetos recuperados na sessão. Com ele é possível criar, remover, atualizar e recuperar objetos persistentes [Fernandes; Lima, 2007]. 3.2 SessionFactory O SessionFactory é aquele que mantém o mapeamento objeto relacional na memória. Permite a criação de objetos Session dos quais os dados são acessados. Um objeto SessionFactory é threadsafe, no entanto deve-se existir apenas uma única instância dele na aplicação, por ser muito pesado, não permitindo ser criado várias vezes [Fernandes; Lima, 2007]. 3.3 Configuration O Configuration é utilizado para realizar as configurações iniciais do Hibernate. Com ele, define-se, 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 [Fernandes; Lima, 2007]. 3.4 Transaction A interface Transaction é utilizada para representar uma unidade indivisível de uma operação de manipulação de dados. O uso dessa interface em aplicações que usam Hibernate é opcional. Essa interface abstrai a aplicação dos detalhes das transações JDBC, JTA ou CORBA [Fernandes; Lima, 2007]. 3.5 Interfaces Criteria e Query As interfaces Criteria e Query são utilizadas para realizar consultas ao banco de dados [Fernandes; Lima, 2007]. 4. Classes Persistentes As classes persistentes de uma aplicação são aquelas que programam as entidades de domínio de negócio. O Hibernate trabalha associando cada tabela do banco de dados a um POJO (Plain Old Java Object). POJO´s são objetos Java que seguem a estrutura de JavaBeans (construtor padrão sem argumentos, e métodos getters e setters para seus atributos) [Fernandes; Lima, 2007]. 5.Vantagens e Desvantagens Serão apresentadas algumas das vantagens e desvantagens na tabela 1, da utilização do Hibernate no desenvolvimento da aplicação: Tabela 1. Vantagens e Desvantagens do Hibernate. VANTAGENS DESVANTAGENS Diminui os códigos de persistência. Na criação das Queries complexas, pois precisa entender todos os critérios. Abstrai o banco de dados, através do mapeamento realizado pelo hibernate. Precisa colocar varias bibliotecas na aplicação, sendo que já uma vez utilizada, precisa se parametrizar novamente. Velocidade no desenvolvimento da aplicação. Melhora o tratamento de gerenciamento de recursos. 6. Persistência com Banco de Dados O procedimento de armazenamento, manutenção, configuração de algum objeto que interage com o banco de dados de maneira transparente é denominada de persistência, ou seja, a persistência é uma funcionalidade do hibernate, que tem a função de interagir com uma biblioteca de dados, integrada em vários gerenciadores do banco, tais como o Oracle, PostgreSQL e o MySQL, além de disponibilizar diversos assistentes que facilitam o trabalho do desenvolvedor [Magalhães; Da Silva, 2013]. 7. S.A.V.A. O sistema de gerenciamento para academias (SAVA) tem como função gerenciar todos os cadastros e movimentos realizados pela empresa, que antes era realizado pelo proprietário que armazenava em cadernos de anotações e fichas as informações da empresa. O software a ser desenvolvido propõe substituir esse método e tem como objetivo controlar o fluxo de clientes, gerenciar contas a pagar e a receber, controle de mensalidades, gerar relatórios detalhados destas atividades, alem de diminuir erros e organizar as informações de maneira segura e de fácil acesso. 8. Conclusão Com a elaboração deste artigo conclui que com os avanços tecnológicos a framework hibernate é um grande facilitador no desenvolvimento de software, ao observar as vantagens oferecidas referentes à portabilidade das tabelas com o banco de dados. Constata-se então que o hibernate proporciona a aplicação realizar o mapeamento com rapidez, ganhando tempo no desenvolvimento e na organização das tabelas, gerando um alto desempenho do banco na aplicação. Todas essas funcionalidades juntamente com uma arquitetura bem elaborada, e um excelente processo de persistência com o banco de dados, fez desse framework essencial no desenvolvimento do SAVA. 9. Referencias Magalhães, Da Silva. (2013) Utilização do Framework Hibernate em aplicação JAVA WEB. Disponível em: <http://web.unipar.br/~seinpar/2013/artigos/Carlos%20Filipe%20Magalhaes.pdf.pdf> acessado em: 23/07/2015. Soares Filho. (2006) UTILIZAÇÃO DO FRAMEWORK HIBERNATE PARA MAPEAMENTO OBJETO/RELACIONAL NA CONSTRUÇÃO DE UM SISTEMA DE INFORMAÇÃO. Disponível em: <http://dsc.inf.furb.br/arquivos/tccs/monografias/2006-1odilonherculanosoaresfilhovf.pdf> acessado em: 23/07/2015. Fernandes, Lima. (2007) Hibernate com Anotações. Disponível em: <http://www.futurepages.org/wiki/lib/exe/fetch.php?media=quickstart:hibernate_anotacoes .pdf> acessado em: 23/07/2015. BAUER, KING. (2005) Hibernate in action. Disponível em: <http://www.cpe.ku.ac.th/~plw/oop/e_book/hibernate_in_action.pdf> acessado em: 20/06/2015.