17
Carlos S. Rodrigues Leonardo Lino Vieira Eric Felipe Barboza Antonio Vasconcellos

Carlos S. Rodrigues Leonardo Lino Vieira Eric Felipe Barboza … · 2010-11-30 · Introdução Necessidade de ... um dos objetivos ao criar o projeto era ... HQL –Hibernate Query

  • Upload
    vocong

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Carlos S. Rodrigues

Leonardo Lino VieiraEric 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 servletou 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 entitybeans 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.

Mapeamento2. 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 utilizaressa tecnologia em um projeto, deve ser levado em conta aonde está a maiorparte 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.