HIBERNATE E JPA: CONCEITOS PARA UTILIZAÇÃO Adroaldo Antônio Candido Neto, Luciene Chagas de Oliveira, Ana Carolina Moraes Oliveira, Diogo Barreiro de Lemos Universidade de Uberaba - UNIUBE Graduação em Engenharia de Computação Uberlândia – MG, Brasil [email protected] , [email protected], [email protected], [email protected] Resumo – A praticidade, agilidade e a qualidade no desenvolvimento de uma aplicação são fatores cruciais, no qual, as empresas neste ramo estão sempre à procura de novas tecnologias, para ter um produto final que satisfaça tanto o cliente quanto quem o desenvolveu. Com essa finalidade, os frameworks Hibernate e JPA vieram para ajudar cumprir esses critérios, permitindo o programador um foco maior em outros quesitos. Palavras-Chave frameworks. – praticidade, Hibernate, esses critérios. Entre as linguagens podemos destacar o Java e os frameworks Hibernate e JPA. Java é uma das linguagens de programação mais utilizada no mundo, pois possui uma grande variedade de conteúdos e frameworks disponíveis, e as atualizações são constantes. Pode ser desenvolvida em qualquer sistema operacional e executada em qualquer plataforma, desde de que tenha instalado uma máquina virtual de Java (JVM) [1]. Por ser uma linguagem orientada a objeto, sua utilização é ainda maior, visto que possibilita o reaproveitamento de código tornando-a mais simples de compreender. O Hibernate utiliza as especificações do JPA, mas o JPA veio posteriormente. Foi desenvolvido na linguagem Java e facilita a integração da aplicação com banco de dados, uma vez que a programação orientada a objetos difere muito do modelo de entidade relacional, são duas maneiras diferentes de trabalhar, objetos e registros. É uma ferramenta de mapeamento objeto-relacional (ORM), que torna simples o código SQL e comunicação com o banco, os quais são geradas em tempo de execução. Isso representa uma grande vantagem na migração para outro banco de dados[2]. Os frameworks apresentados anteriormente, utilizados em conjunto, auxiliam no desenvolvimento dos sistemas corporativos, pois trabalha com as classes diretamente, não sendo necessário a utilização de códigos SQL. Dessa forma, o desenvolvedor consegue entregar o produto final em um menor tempo, com a mesma qualidade ou superior. O esquema que será desenvolvido tem como finalidade a integração da linguagem de programação Java, Hibernate e JPA com o banco de dados, onde é possível visualizar de maneira simples a união dessas tecnologias, o que diferencia de outras ferramentas. Este projeto tem como objetivo demonstrar a praticidade e agilidade que as ferramentas descritas acima podem trazer durante o desenvolvimento de uma aplicação e os conceitos de como utilizá-las, revelando o quão são poderosas. JPA, HIBERNATE E JPA: CONCEPTS FOR USE Abstract - The practicality, agility and quality in the development of an application are crucial factors in which the companies in this business are always looking for new technologies to have a final product that meets both the client and who developed it. To this end, the frameworks Hibernate and JPA came to help meet these criteria, allowing the programmer a greater focus on other issues. 1 Keywords – practicality, Hibernate, JPA, frameworks. I. INTRODUÇÃO No ambiente corporativo é necessário sempre estar buscando novas tecnologias, para agilizar na entrega e na qualidade do produto final. Uma parte significativa desse resultado depende dos sistemas que estão implantados nas organizações que possibilitam atualizar as informações em tempo real, deixando visível cada processo da empresa. É de suma importância que os profissionais que desenvolvam esses sistemas sejam capacitados, com a finalidade de produzir com eficiência e permitindo que o código fonte fique compreensível para uma futura manutenção. As empresas necessitam de confiabilidade em um sistema que seja capaz de trabalhar com os dados de seus clientes de forma integra. E um outro ponto, a portabilidade de um sistema corporativo muitas vezes é complexa, por não se pensar neste ponto quando é desenvolvido. A linguagem de programação e os frameworks são escolhidos para preencher II. CONCEITOS Nesta seção serão abordados quatro conceitos teóricos, que são de grande importância para compreensão do trabalho. São eles: a importância da linguagem de programação Java, mapeamento objeto-relacional (ORM), framework Hibernate e framework JPA. A. A importância da linguagem de programação Java Java teve início em 1991, com um projeto titulado de “Projeto Green”, que tinha como objetivo a criação de tecnologias de software para empresas que trabalhavam com equipamentos eletrônicos de consumo, com a ideia principal de comunicação entre eles [3]. 1 A programação orienta a objetos é uma das vantagens do Java, que é amplamente utilizada na indústria de desenvolvimento de software, visto que ele também é gratuito. Além disso, ele pode ser desenvolvido tanto para desktop quanto para web, o qual, torna ainda mais o mercado aquecido. E constantemente são lançados e atualizados diversos frameworks. Fig. 1. Interface MySQL Workbench. B. Mapeamento objeto-relacional (ORM) O mapeamento objeto-relacional (ORM) é uma técnica que permite a abstração entre o modelo relacional (banco de dados) e o modelo de objetos (classes da aplicação), minimizando as diferenças entre eles e melhorando a produtividade, diminuindo o trabalho do desenvolvedor, já que não são feitos códigos na linguagem do banco de dados para o acesso aos mesmos [4]. Códigos feitos a mão demandam tempo e podem gerar problemas na mudança de bancos de dados e falta de compatibilidade dependendo do paradigma utilizado na aplicação [2]. Clique com o botão direito em cima de um dos schemas já criados por padrão pelo MySQL e selecione “Create Schema”. Nomeie seu banco de dados e prossiga em criar as tabelas desejadas. Segue um exemplo de criação de tabela por script e um exemplo via interface gráfica: Fig. 2. Criação de tabela por script. C. Framework Hibernate O Hibernate é um framework para mapeamento objetorelacional para ambientes Java, porém pode ser encontrado na plataforma .Net com o nome NHibernate [5]. É um software livre de código aberto, distribuído com a licença LGPL, e sua versão atual, da elaboração do artigo, é a 5.2.0 [6]. Seu objetivo é diminuir não só o tempo de desenvolvimento, mas também prover facilidades em consultas e retorno de dados, além de mapear as classes Java para tabelas do banco de dados e tipos de dados Java para tipos de dados SQL [7]. O Hibernate gera os códigos SQL necessários para operações realizadas no banco de dados, mantendo a aplicação portável para outros bancos, apesar de causar um leve aumento no tempo de execução. Fig. 3. Criando a tabela no MySQL Workbench. D. Framework JPA O Java Persistence API (JPA) fornece um modelo de mapeamento objeto-relacional de persistência de dados baseado em POJOs (Plain Old Java Objects) [8]. É uma especificação para acesso à banco de dados, que funciona com outros frameworks ORM. O JPA dita uma interface de como o gerenciamento deve ser feito entre o banco de dados e a aplicação, portanto, necessitando de um framework para fazer a implementação, como o Hibernate [9]. Fig. 4. Criando a tabela através da interface. B. Criando as classes Java modelo a partir das tabelas Uma vez criada a tabela, podemos agora criar as entidades no eclipse a partir das tabelas criadas no MySQL. Dentro do Eclipse clique em New > JPA Project. Após criado o projeto clique com o botão direito no projeto e escolha JPA Tools > Generate Entities from Tables III. NORMAS ESPECIAIS A. JPA Primeiramente devemos criar as o banco de dados e as tabelas no MySQL. Isto pode ser feito tanto através de script ou pela interface no MySQL Workbench. Crie uma conexão local e conecte-se a esta conexão. 2 Fig. 5. Criando os Models a partir das tabelas. Adicione uma nova conexão MySQL Fig. 8. Adicionando conexão MySQL Fig. 6. Adicionando conexão MySQL. Agora que a conexão está criada selecione o banco e as tabelas que deseja gerar. Fig. 9. Selecione as tabelas que gerarão os models. A classe modelo da sua tabela foi criada. Agora copie as classes para o seu projeto principal. Fig. 7. Adicionando conexão MySQL. Selecione o driver MySQL JDBC e configure de acordo com o seu banco de dados, em seguida teste a sua conexão com o botão “Test Connection”. Fig. 10. Classe modelo. C. Utilizando o Hibernate Antes de utilizarmos o Hibernate é necessário baixar as libs no site www.hibernate.org e incluí-las no projeto. 3 Fig. 14. Classe HibernateFactory. Agora na classe DAO iremos criar as chamadas com o Hibernate. É importante que façamos todos os imports necessários: Fig. 15. Imports Hibernate. E finalmente, utilizamos o Hibernate para o acesso de dados de uma forma simples, através de sessões que permitem commit e rollback. Fig. 11. Libraries Hibernate na pasta lib. Devemos agora configurar o arquivo properties do Hibernate com a sua conexão do banco. Fig. 16. Chamadas Hibernate. Fig. 12. Arquivo properties do hibernate. IV. CONCLUSÕES Portanto, o modo de pensar torna-se mais objetivo, conduzindo o programador a focar mais nos objetos e menos nos registros, que está relacionado ao banco de dados. Com esse cenário, a agilidade tem um aumento expressivo, pois não são necessários códigos SQL implantados diretamente no código fonte da aplicação, uma vez que, os frameworks Hibernate e JPA já se responsabilizam por executar as tarefas de persistência no banco, cabendo somente o desenvolvedor introduzir os códigos de forma correta. Fig. 13. Configuração de acordo com o seu banco. Devemos criar a classe HibernateFactory que será responsável por criar a sessão de conexão com o banco quando formos utiliza-lo. 4 Quando se está trabalhando em uma linguagem de orientação a objetos, o programador tem um foco maior em outras partes da aplicação. REFERÊNCIAS [1] GONÇALVES, Otávio. Por que java?. Disponível em: <http://www.devmedia.com.br/por-que-java/20384>. Acesso em: 19 junho 2016. [2] CAELUM. Hibernate: Java para Desenvolvimento Web. Disponível em: <https://www.caelum.com.br/apostilajava-web/>. Acesso em: 20 junho 2016. [3] VINÍCIUS, Thiago. Java: história e principais conceitos. Disponível em: < http://www.devmedia.com.br/java-historia-e-principaisconceitos/25178>. Acesso em: 22 junho 2016. [4] MAYUMI, Priscilla. ORM – Object Relational Mapping – Revista Easy .Net Magazine 28. Disponível em: <http://www.devmedia.com.br/orm-object-relationalmapping-revista-easy-net-magazine-28/27158>. Acesso em: 20 junho 2016. [5] SILVA, Osmar J. Hibernate: O que é, como baixar, instalar, configurar e testar. Disponível em: <http://www.arquivodecodigos.net/principal/diretorios/hi bernate/artigos_tutoriais/hibernate_o_que_e_como_baix ar_instalar_configurar_e_testar.php>. Acesso em: 20 junho 2016. [6] HIBERNATE. Hibernate ORM: Idiomatic persistence for Java and relational databases. Disponível em: <http://hibernate.org/orm/>. Acesso em: 20 junho 2016. [7] PRIMO, Izalmo. Hibernate: Artigo Java Magazine 73 – Desenvolvendo com Hibernate. Disponível em: <http://www.devmedia.com.br/artigo-java-magazine-73desenvolvendo-com-hibernate/14756>. Acesso em: 20 junho 2016. [8] MEDEIROS, Higor. Introdução à JPA – Java Persistence API. Disponível em: <http://www.devmedia.com.br/introducao-a-jpa-javapersistence-api/28173>Acesso em: 20 junho 2016. [9] RODRIGUES, Fernando. O que é JPA (Java Persistence API). Disponível em: < http://fernandorodrigues.pro/oque-e-jpa-java-persistence-api/>. Acesso em: 20 junho 2016. 5