introdução ao hibernate cássio freire rafael duarte
TRANSCRIPT
![Page 1: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/1.jpg)
Introdução ao Hibernate
Cássio FreireRafael Duarte
![Page 2: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/2.jpg)
Introdução
• Hibernate é um mecanismo simples que permite persistir objetos Java em banco de dados.------------------------------------------------------------------------
• Definição do mapeamento objeto relacional em XML• Linguagem de consulta OO (HQL - Hibernate Query Language)• Overhead mínimo em relação à JDBC
– overhead < 10% X benefícios (separação em camadas, baixo acopl.,etc)
![Page 3: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/3.jpg)
Arquitetura base
![Page 4: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/4.jpg)
Características
• Relacionamentos (many-to-one, many-to-many, one-to-one, etc)• Dialetos (MySQLDialect, OracleDialect, PostgreSQLDialect, etc)• Identificadores
– vm: gera identificadores de tipo long, short, int.– sequence: utiliza a sequencia das bases de dados DB2, PostgreSQL,
Oracle, SAP DB, podendo ser long, shor ou int.– hilo: utiliza um algoritimo para gerar identificadores do tipo long, short,
ou int. – uuid.hex, native, etc …
![Page 5: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/5.jpg)
Banco de Dados suportados
• DB2 7.1, 7.2; • MySQL M3.23;• PostgreSQL 7.1.2, 7.2, 7.3; • Oracle 8i, 9i; • Sybase 12.5; • Interbase 6.0.1 (Open Source) with Firebird;• HypersonicSQL 1.61, 1.7.0; • Microsoft SQL Server 2000;
– Outros• Mckoi i SQL 0.93; Progress 9; Pointbase Embedded 4.3; SAP DB 7.3;
Informix; Ingres; FrontBase
![Page 6: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/6.jpg)
Aplicação Hibernate
• 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 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 7: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/7.jpg)
Cenário de Teste
JSP Servlet
Hibernate BD
HQL SQL
![Page 8: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/8.jpg)
Hibernate Properties File Server.xml
Properties
![Page 9: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/9.jpg)
Database Schema
![Page 10: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/10.jpg)
Java Class Files
![Page 11: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/11.jpg)
Hibernate cfg.xml
Dialeto
Arquivo que mapeia o objeto a ser persistido
![Page 12: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/12.jpg)
Hibernate Mapping (XML) File
![Page 13: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/13.jpg)
Adicionando um Gato
// 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.setSex('M');session.save(cat);transaction.commit();session.close();
SQL gerado MySQL:INSERT INTO cat (id, name, sex) VALUES (NULL, ‘princess', 'M')
![Page 14: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/14.jpg)
Removendo um Gato
// 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();session.delete("FROM cat in class example.Cat WHERE cat.id
="+request.getParameter("id"))transaction.commit();session.close();
SQL gerado MySQL:DELETE FROM cat WHERE id = parametro
![Page 15: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/15.jpg)
Herança - DomesticCat
![Page 16: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/16.jpg)
Relacionamentos (Ex: One-to-Many, Many-to-One)
![Page 17: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/17.jpg)
Exemplo – Execução
• http://172.17.104.53/quickstart
![Page 18: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/18.jpg)
Tecnologia Complementares
• 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 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.
![Page 19: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/19.jpg)
J2EE Patterns(DataAccessObject + ValueObject):. Estrutura
Encapsula todos os acessos à
origem de dados
Hibernate
Transportador de Dados
![Page 20: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/20.jpg)
J2EE Patterns(DataAccessObject + ValueObject):. Participantes e Responsabilidades
HIB
ER
NA
TE
![Page 21: Introdução ao Hibernate Cássio Freire Rafael Duarte](https://reader036.vdocuments.mx/reader036/viewer/2022062700/552fc141497959413d8df514/html5/thumbnails/21.jpg)
Referências
• Página Oficial– www.hibernate.org
• A Hitchhiker's Guide to Hibernate– http://files.blog-city.com/files/aa/1018/b/HibernateKickstart.html
• Hibernate in Action: Practical Object/Relational Mapping– http://www.theserverside.com/resources/HibernateReview.jsp
• Hibernate & Tomcat Quickstart– http://www.hibernate.org/hib_docs/examples/quickstart/html/
quickstart.html