INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus … · 2010-06-25 · espalhados ao...

23
INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean Ercilio Thiago

Transcript of INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus … · 2010-06-25 · espalhados ao...

INE 5612Professor: Frank Siqueira

Alunos: Gustavo de GeusAlunos: Gustavo de GeusLeonardo Silva

JeanErcilioThiago

� DESENVOLVEDORES JAVA EM TODO MUNDO

� LIDER GAVIN KING

� JBOSS MANTEVE O SUPORTE

História� Hibernate foi criado por desenvolvedores Java, espalhados ao redor do mundo, e liderado por Gavin King. Posteriormente, JBoss Inc (empresa comprada pela Red Hat) contratou os principais desenvolvedores do programa para fazer o seu suporte.

� FRAMEWORK PARA MAPEAMENTO OBJETO-RELACIONAL

� FEITO EM LINGUAGEM JAVA

� MAPEAMENTO DE CLASSES JAVA PARA BANCO DE DADOS

� USO DE ARQUIVOS XML PARA ESTABELECER A RELAÇÃO

IntroduçãoIntroduçãoIntroduçãoIntrodução

� O Hibernate é um framework para o mapeamento objeto-relacional escrito na linguagem Java, mas também é disponível em .Net como o nome NHibernate. Este programa facilita o mapeamento dos atributos entre uma base tradicional de dados relacionais e o modelo tradicional de dados relacionais e o modelo objeto de uma aplicação, mediante o uso de arquivos (XML) para estabelecer esta relação.

� Hibernate é um software livre de código aberto

OBJETIVOSOBJETIVOSOBJETIVOSOBJETIVOS� DIMINUIR COMPLEXIDADE ENTRE PROGRAMAS JAVA

� LIBERA O DESENVOLVEDOR DO TRABALHO MANUAL DA CONVERSÃO DOS DADOS

RESULTANTESRESULTANTESRESULTANTESRESULTANTES� MANTER O PROGRAMA PORTÁVEL PARA QUAISQUER BANCOS DE DADOS SQL

� UNIR OBJETOS JAVA AOS BANCOS DE DADOS RELACIONAIS

� REDUZIR O TEMPO DE DESENVOLVIMENTO GASTO COM MANIPULAÇÃO DE DADOS

A HQL (Hibernate Query Language) é um dialeto SQL para o Hibernate. Ela é uma poderosa linguagem de consulta que se parece muito com a SQL, mas a HQL é totalmente orientada a objeto, incluindo os paradigmas de herança, polimorfismo e encapsulamento.

No Hibernate, você pode escolher tanto usar a SQL quanto a HQL. Escolhendo a HQL, você poderá executar os pedidos SQL sobre as classes de persistência do Java ao invés de tabelas no banco de dados, aumentando, assim, a distância entre o desenvolvimento da regras de negócio e o banco de dados.

� HQL permite representar consultas em termos orientado a objetos, usando objetos e suas propriedades.

� Consultas em HQL permite retornar objetos. Pode-se assim fazer uma pesquisa que Pode-se assim fazer uma pesquisa que retorne tuplas em forma de objeto que está pronto para ser acessado, operado e manipulado. Isto elimina a tarefa de ter que instanciar objetos a partir do zero com o resultado de uma consulta SQL.

� HQL suporta consultas polimórficas, ou seja, juntamente com o objeto retornado em uma pesquisa, todos seus filhos (objetos de subclasses) também são retornados.

� É fácil de aprender e implementar, pois sua � É fácil de aprender e implementar, pois sua sintaxe e as características são muito semelhantes ao SQL.

� 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 (presente na maioria do modelo relacional (presente na maioria dos SGDBs). Em especial, no desenvolvimento de consultas e atualizações dos dados.

� Sua principal característica é a transformação transformação transformação transformação das classes em Java para tabelas de dados (e das classes em Java para tabelas de dados (e das classes em Java para tabelas de dados (e das classes em Java para tabelas de dados (e dos tipos de dados Java para os da SQL). dos tipos de dados Java para os da SQL). dos tipos de dados Java para os da SQL). dos tipos de dados Java para os da SQL).

� O Hibernate gera as chamadas SQL e libera o libera o libera o libera o desenvolvedor do trabalho manual da desenvolvedor do trabalho manual da desenvolvedor do trabalho manual da desenvolvedor do trabalho manual da desenvolvedor do trabalho manual da desenvolvedor do trabalho manual da desenvolvedor do trabalho manual da desenvolvedor do trabalho manual da conversão dos dados resultante, mantendo o conversão dos dados resultante, mantendo o conversão dos dados resultante, mantendo o conversão dos dados resultante, mantendo o programa portável para quaisquer bancos de programa portável para quaisquer bancos de programa portável para quaisquer bancos de programa portável para quaisquer bancos de dados SQLdados SQLdados SQLdados SQL, porém causando um pequeno aumento no tempo de execução.

� Nas questões relacionadas para o gerenciamento de transações e na tecnologia de acesso à base de dados acesso à base de dados acesso à base de dados acesso à base de dados são de responsabilidade de outros são de responsabilidade de outros são de responsabilidade de outros são de responsabilidade de outros elementos na infraestruturaelementos na infraestruturaelementos na infraestruturaelementos na infraestrutura do programa. Apesar de existirem API no Hibernate para possuir operações de programa. Apesar de existirem API no Hibernate para possuir operações de controle transacional, ele simplesmente delegará estas funções para a infraestrutura na qual foi instalada(Servidor de Aplicação)(Servidor de Aplicação)(Servidor de Aplicação)(Servidor de Aplicação).

� No caso de aplicações construídas para serem executadas em servidores de aplicação, o gerenciamento das transações é realizado segundo o padrão JTA(Java JTA(Java JTA(Java JTA(Java TransactionTransactionTransactionTransaction API)API)API)API). Já nas aplicações standalone, o programa delega o tratamento transacional ao driver JDBC.

� Hibernate pode ser utilizado em aplicações Java Java Java Java standalonestandalonestandalonestandalone ou em aplicações Java EEou em aplicações Java EEou em aplicações Java EEou em aplicações Java EE, utilizando servlet ou sessões EJB beans.servlet ou sessões EJB beans.

� o Hibernate usa a Reflection API para gerar os SQLsnecessários para persistir o estado de beans em diversos banco de dados relacionais, além de definir definir definir definir o conceito de dialetoo conceito de dialetoo conceito de dialetoo conceito de dialeto para resolver as diferenças de diferenças de diferenças de diferenças de sintaxe do SQL usado entre as diferentes sintaxe do SQL usado entre as diferentes sintaxe do SQL usado entre as diferentes sintaxe do SQL usado entre as diferentes implementações de banco de dados.implementações de banco de dados.implementações de banco de dados.implementações de banco de dados.

� Mas o framework não é uma boa opção para framework não é uma boa opção para framework não é uma boa opção para framework não é uma boa opção para todos os tipos de aplicaçãotodos os tipos de aplicaçãotodos os tipos de aplicaçãotodos os tipos de aplicação. Sistemas que fazem uso extensivo de stored procedures, triggers ou que implementam a maior parte implementam a maior parte implementam a maior parte implementam a maior parte da lógica da aplicação no banco de dados, da lógica da aplicação no banco de dados, da lógica da aplicação no banco de dados, da lógica da aplicação no banco de dados, contando com um modelo de objetos “pobre” contando com um modelo de objetos “pobre” contando com um modelo de objetos “pobre” contando com um modelo de objetos “pobre” não vai se beneficiar com o uso do Hibernate. Ele é mais indicado para sistemas que contam Ele é mais indicado para sistemas que contam com um modelo rico, onde a maior parte da a maior parte da a maior parte da a maior parte da lógica de negócios fica na própria aplicação lógica de negócios fica na própria aplicação lógica de negócios fica na própria aplicação lógica de negócios fica na própria aplicação Java, dependendo pouco de funções Java, dependendo pouco de funções Java, dependendo pouco de funções Java, dependendo pouco de funções específicas do banco de dados.específicas do banco de dados.específicas do banco de dados.específicas do banco de dados.

� Hibernate Properties File◦ arquivo (xml ou properties) contendo as propriedades de conexão ao banco

� Hibernate Mapping (XML) File◦ arquivo xml que relaciona as propriedades do objeto aos campos da tabelaobjeto aos campos da tabela

� Hibernate Java Library � HQL (Hibernate Query Language)� Java Class Files◦ objeto cujo estado vai ser persistido

� Database Schema◦ tabela no banco de dados

JSP Servlet

HQLSQL

HibernateBD

HQL

Server.xml

Properties

Dialeto

Arquivo que mapeia o objeto a ser persistido

// Obtém uma conexão JDBC e instancia uma nova sessãoSession session = sessionFactory.openSession();// Inicia uma nova transação (opcional)Transaction transaction = session.beginTransaction();Cat cat = new Cat();cat.setName("princess");cat.setName("princess");cat.setSex('M');session.save(cat);transaction.commit();session.close();

SQL gerado MySQL:SQL gerado MySQL:SQL gerado MySQL:SQL gerado MySQL:INSERT INTO cat (id, name, sex) VALUES (NULL, ‘princess',

'M')

� Hibernate + Struts� Hibernate + XDoclet + Ant� Hibernate + Design Patterns (DAO, VO, etc)Ex: Utilizar scripts do ANT com o Xdoclet para gerar os arquivos “.hbm.xml” do hibernategerar os arquivos “.hbm.xml” do hibernate

XDoclet – Ferramenta usada para geração automática de documentação e código. Combinada com o Ant, automatiza a criação de arquivos XML, aplicações Web, Java Beans, test cases para Junit, etc.

Ant – Permite automatizar todos os processos de construção, instalação, configuração, integração, deployment e depuração. Pode enviar e-mail, transferir arquivos via FTP, executar programas, transformar documentos usando XSLT, gerar PDF, etc.