ine 5612 professor: frank siqueira alunos: gustavo de geus...

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

Upload: others

Post on 29-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

INE 5612Professor: Frank Siqueira

Alunos: Gustavo de GeusAlunos: Gustavo de GeusLeonardo Silva

JeanErcilioThiago

Page 2: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

� 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.

Page 3: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

� 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

Page 4: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

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

Page 5: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

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

Page 6: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

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.

Page 7: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean
Page 8: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

� 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.

Page 9: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

� 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.

Page 10: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

� 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.

Page 11: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

� 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.

Page 12: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

� 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).

Page 13: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

� 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.

Page 14: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

� 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.

Page 15: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

� 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

Page 16: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

JSP Servlet

HQLSQL

HibernateBD

HQL

Page 17: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

Server.xml

Properties

Page 18: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean
Page 19: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean
Page 20: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

Dialeto

Arquivo que mapeia o objeto a ser persistido

Page 21: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean
Page 22: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

// 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')

Page 23: INE 5612 Professor: Frank Siqueira Alunos: Gustavo de Geus ...frank/INE5612/Seminario2010.1/Hibernate.pdf · Professor: Frank Siqueira Alunos: Gustavo de Geus Leonardo Silva Jean

� 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.