Carlos S. Rodrigues Leonardo Lino Vieira Eric Felipe Barboza Antonio Vasconcellos
Introdução Necessidade de diminuir a complexidade na interação código-banco de dados para o programador,além de diminuir o tempo de programação. Criou-se Hibernate. Um framework para mapeamento objeto-relacional escrito em linguagem Java,idealizado e desenvolvido por Gavin King. Disponível também para.net com o nome de NHibernate.*
Características O objetivo do Hibernate é diminuir a complexidade entre os programas Java, baseado no modelo orientado a objeto, que precisam trabalhar com um banco de dados do modelo relacional. Em especial, no desenvolvimento de consultas e atualizações dos dados.(*) Sua principal característica é a transformação das classes em Java para tabelas de dados (e dos tipos de dados Java para os da SQL). Na versão 3.x o Hibernate implementa a especificação JPA (Java Persistence API) através do conceito de anotações (implementada a partir do JDK5), o que facilita ainda mais o mapeamento objeto-relacional, que pode agora ser feito diretamente na classe, substituindo o uso dos arquivos XML. Gerenciamento de transações não é responsabilidade do Hibernate e sim de outros elementos na infraestrutura do programa. (*)
Características Hibernate pode ser utilizado em aplicações Java standalone ou em aplicações Java EE, utilizando servlet ou sessões EJB beans. Hibernate é um software livre de código aberto distribuído com a licença LGPL (GNU Lesser General Public License).
Histórico O framework Hibernate foi desenvolvido por uma equipe de programadores Java liderada por Gavin King e teve sua primeira versão divulgada em 2004. Segundo King, um dos objetivos ao criar o projeto era resolver seus problemas referentes à persistência causados pelo EJB 2.0, o qual considerava muito complexo. Eu queria resolver um problema interessante, um problema que me afetava pessoalmente. Eu estava frustrado com o trabalho com entity beans no estilo EJB 2 e as frágeis camadas de persistência escritas à mão. Gavin King, criador do Hibernate em entrevista. Com um escopo muito vasto, o projeto tornou-se inviável de ser mantido apenas nos tempos livres, assim King aceitou entrar para o JBoss Group, passando a ser remunerado para continuar a desenvolver o projeto, o que lhe permitiu dedicação completa ao Hibernate.
Histórico Recentemente foi lançada a mais nova versao -> Hibernate Core 3.6.0.Final Atualmente o Hibernate é mantido pelo JBoss Group o qual possui duas equipes: 1) Equipe de desenvolvimento liderado pelo próprio Gavin King. 2)Equipe dedicada para auxiliar os usuários em treinamento, suporte e consultoria. -> Recentemente a empresa Red Hat comprou o JBoss Group.
Estrutura / Implementações JPA
Vantagens Open Source(licensa LGPL); Transformação das classes em Java para tabelas de dados (e dos tipos de dados Java para os da SQL); Livra o programador da conversão manual do resultset, sendo altamente portável;
Vantagens Escrever (bem) menos código repetitivo, sem perder flexibilidade; Acesso a recursos nativos/específicos dos bancos de dados; Menos preocupação da arquitetura de persistência;
Desvantagens Para executar consultas mais complexas, geralmente é necessário algum tempo de experiência; Perda de desempenho;
HQL Hibernate Query Language Dialeto de SQL. Orientada a objetos. Exemplos: from Foo foo where foo.bar.baz.customer.address.city is not null from Cat cat, Cat rival where cat.mate = rival.mate
Mapeamento Objeto-Relacional Mapeamento relacional X objeto-relacional. Bancos de dados orientados a objetos (ODBMS).
Configuração O hibernate pode ser baixado gratuitamente no site do próprio projeto: http://www.hibernate.org/ O projeto principal e base de nossa apresentação é o projeto Hibernate Core. A configuração do hibernate pode ser realizade de duas formas: 1. Hibernate.properties 2. Hibernate.cfg.xml
Mapeamento O mapeamento pode ser feito de duas formas: 1. Anotações: O mapeamento via anotações consiste em adicionar anotações ao código de classes a serem mapeadas. Anotações básicas: @Entity = Classe que o hibernate tornará persistível no BD. @Id = Informa que o atributo id será a chave primária(toda entidade necessita ter uma chave primária). @GeneratedValue = Esta chave será populado no BD, ou seja, no caso de um BD MYSQL, será usado um auto increment. Existem muitas outras anotações além das acima citadas.
Mapeamento 2. hbm.xml: Quando o mapeamento é feito via xml, o indicado é que se crie um.hbm.xml para cada classe. Mapeamento via xml é uma abordagem mais antiga. Evita poluir classes com anotações. Ferramentas como andromda ajudam na geração desse xml.
Considerações finais Como já mostrado anteriormente, o Hibernate traz muitas facilidades e agilidade para os programadores. Porém antes de tomar a decisão de utilizar essa tecnologia em um projeto, deve ser levado em conta aonde está a maior parte da lógica da aplicação. Projetos que implementam a maior parte de sua lógica nos bancos de dados e não contam com um consistente modelo de objetos, não terão muito benefício com o uso desse Framework.
Bibliografia www.wikipedia.org http://www.hibernate.org/ http://www.devmedia.com.br/articles/viewcomp_forp rint.asp?comp=14756