8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
1/42
Open-source Education
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
2/42
Agenda
1. Histrico sobre persistncia2. Tecnologias populares
3. Hibernate clssico
4. Java Persistence API5. Hibernate & JPA
6. Demo: Desenvolvimento Swing com Hibernate / JPA
7. Demo: Desenvolvimento Web com Hibernate e Faces8. Concluses
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
3/42
Persistncia
Capacidade de gravarmos dados em memrias novolteis: hard-disk, tape-backup, CD, DVD, etc.
Necessidade bsica, 99% dos softwares corporativos
necessitam;
Quanto mais culpados queremos encontrar, mais dados
armazenamos;
Linguagens como Dbase, Clipper, Visual Object, Paradox,
FoxPro eram orientadas a dados persistentes;
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
4/42
Agenda
1. Histrico sobre persistncia2. Tecnologias populares
3. Hibernate clssico
4. Java Persistence API5. Hibernate & JPA
6. Demo: Desenvolvimento Swing com Hibernate / JPA
7. Demo: Desenvolvimento Web com Hibernate e Faces8. Concluses
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
5/42
Tecnologias Populares
Homens quando eram homens, escreviam seu prprio
cdigo SQL especialista em SQL embriagado, lembrando quando
ganhava R$ 80,00 por hora para escrever procedures
JDBC com cdigo SQL e Data Access Object Pattern;
RDO, ADO e DAO na plataforma Microsoft;
PL/SQL com Oracle Forms;
Computadores quando no eram computadores, rodavam
cdigo SQL escrito por homens autor deste slide embriagado,
tentando fazer uma gracinha para o pblico
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
6/42
JDBC
API do Java para acesso a banco de dados;
Trabalha com esquema de Driver;
4 Tipos de Driver:
1 JDBC / ODBC Bridge para comunicao com Drivers Windows
2 Nativo Cdigo de acesso ao DB escrito em C / C++;
3 Middleware Driver DB acessado via middleware especializado
4 Puro Java Acesso de baixo nvel ao DB totalmente escrito em
Java. Driver desejado e utilizado na maior parte. Com o Driver obtemos conexes;
Com conexes enviamos comandos;
Comandos podem gerar resultados (select)
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
7/42
DEMO JDBC
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
8/42
Mundo novo
No mundo novo...
Entity Beans 1.x (padro Java EE)
Entity Beans 2.0 e 2.1 (padro Java EE)
Hibernate
Oracle TopLink Java Data Objects
Prevailer
Grande parte das abordagens trocam SQL por XML meta-
dado;
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
9/42
Alternativas..
Em algumas implementaes, o XML ficou excessivo
(Entity 2.x);
Alternativas para o padro Entity Bean:
Spring;
Pico Container;
OJB;
Hibernate stand-alone;
Hiberante com EJBs Session;
Outro framework com Web ou EJB;
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
10/42
Agenda
1. Histrico sobre persistncia2. Tecnologias populares
3. Hibernate clssico
4. Java Persistence API5. Hibernate & JPA
6. Demo: Desenvolvimento Swing com Hibernate / JPA
7. Demo: Desenvolvimento Web com Hibernate e Faces8. Concluses
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
11/42
Porque utilizar?
Custo: opensource LGPL;
Benefcio: uma soluo poderosa, madura e portvel
compatvel com diversos bancos de dados relacionais e
servidores de aplicao JEE;
Curva de aprendizado: rpida comparada com as
outras solues;
Documentao: livros publicados e diversos tutoriais e
artigos disponveis na internet;
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
12/42
Porque utilizar?
Suporte: pode ser contratado comercialmente ou pode se
recorrer a uma comunidade extremamente ativa nos frunsde discusso;
Padro De Facto : amplamente adotado pelo mercado
superando as especificaes EJB 2.x e JDO; Os conceitos do projeto Hibernate foram adotados para os
entity beans segundo a especificao EJB 3;
Nmero de profissionais;
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
13/42
Exemplo
Um JavaBean Cliente, contendo os atributos:
codigo, nome, endereco, telefones
Uma tabela no RDBMS:
codigo (auto-increment) int
nome (varchar 255)
endereco (varchar 255)
telefones (varchar 255)
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
14/42
XMLs
Um hibernate-config.xml configurando o JDBC e dialeto:
Devemos criar um XML por entidade para mapeamento;
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
15/42
XMLs
Um xml para cada definio de entidade, neste caso
chamamos o arquivo abaixo de Cliente.hbm.xml:
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
16/42
Cdigo Java Ler Clientes
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
17/42
Salvar e Remover
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
18/42
Relacionamentos
Podemos definir as associaes / composies dos
nossos objetos. Vejamos um exemplo para a classe
Pedido:
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
19/42
Relacionamentos
Neste caso estamos definindo que um Pedido contm uma
coleo de itens (um-para-muitos):
Um Pedido tem um Cliente (muitos-para-um)
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
20/42
A classe Pedido:
Totalmente simples, com atributos encapsulados por
getters e setters!
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
21/42
Resumo Hibernate Clssico
Conquistou uma grande comunidade devido a sua
simplicidade aliada a competncia;
Tem capacidades para gerencimento de estratgia de
recuperao de objetos compostos;
Aumenta a produtividade;
Em muitos casos o cdigo SQL gerado pelo Hibernate
superior ao cdigo humano;
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
22/42
O fenmeno Xdoclet
Diversas tecnologias passaram a utilizar documentos XML
como parte da implementao e configurao de um
framework
Exemplos: Struts, Hibernate, EJBs, Java Web Components,
Log4J, Tiles, etc.
Resultado: um emaranhado de XMLs para gerenciar;
Soluo = usar comentrios formato JavaDoc para inserir
meta-dados e configuraes no cdigo Java.
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
23/42
O fenmeno Xdoclet
O Xdoclet estende o
JavaDoc, criando
anotaes no estilo@XPTO para gerar
arquivos XML para
os frameworks.
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
24/42
O fenmeno Xdoclet
Xdoclet foi amplamente utilizado para EJBs Entity e
Session, uma vez que seu primeiro objetivo foi simplificar
tais tecnologias;
Xdoclet influnciou muito no desenvolvimento Java
Enterprise;
Trabalha integrado ao Ant;
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
25/42
O fenmeno Xdoclet
No Java 1.5 a anotaes so nativas, ou seja, no
precisamos colocar em comentrios. Ex.:
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
26/42
Agenda
1. Histrico sobre persistncia2. Tecnologias populares
3. Hibernate clssico
4. Java Persistence API
5. Hibernate & JPA
6. Demo: Desenvolvimento Swing com Hibernate / JPA
7. Demo: Desenvolvimento Web com Hibernate e Faces
8. Concluses
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
27/42
Persistence API
Parte resultante da especificao de EJB 3.0, alguns dos
objetivos do EJB 3.0, relevantes para persistncia:
Definio de meta-dados (annotations do Java 5)
Definio de valores defaults programticos e de meta-dados a fim
de reduzir a necessidade de o desenvolvedor declarar
comportamentos comuns e esperados.
Simplificao para persistncia via entity beans. Suporte para
modelos de domnio leves, com herana e polimorfismo.
Eliminao completa das interfaces para entidades persistentes
Especificao de meta-dados e elementos de deployment
descriptor para mapeamento objeto relacional
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
28/42
Persistence API
Padronizao do mecanismo de persistncia mais adotado
no mercado;
Hibernate uma implementao JPA;
TopLink uma implementao JPA;
Podemos utilizar o JPA sem a necessidade de um
container de EJBs (ligthweigth container);
Entidades podem ser injetadas em EJBs ao invs de
lookups JNDI;
As capacidades podem ser ampliadas atravs de
anotaes especficas;
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
29/42
Agenda
1. Histrico sobre persistncia
2. Tecnologias populares
3. Hibernate clssico
4. Java Persistence API
5. Hibernate & JPA
6. Demo: Desenvolvimento Swing com Hibernate / JPA
7. Demo: Desenvolvimento Web com Hibernate e Faces
8. Concluses
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
30/42
Hibernate e JPA
Downloads:
Hibernate 3.2 Core
Hibernate 3.2 Persistence Manager
Configurar uma biblioteca com os Jars do lib de ambos
diretrios;
O NetBeans 5.5 oferece suporte para JPA e vem pr-
configurado com Oracle TopLink;
Pode-se utilizar com Swing, Web Applications e EJBs;
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
31/42
Agenda
1. Histrico sobre persistncia
2. Tecnologias populares
3. Hibernate clssico
4. Java Persistence API
5. Hibernate & JPA
6. Demo: Desenvolvimento Swing com Hibernate / JPA
7. Demo: Desenvolvimento Web com Hibernate e Faces
8. Concluses
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
32/42
Demo: Netbeans, JPA com Hibernate e Faces
1. Crie um novo projeto Web
2. Digite o nome do projeto edesabilite o cdigo 1.4
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
33/42
Demo: Netbeans, JPA com Hibernate e Faces
3. Escolha o framework JSF
4. Em File -> New File, escolhaPersistence - > Entity from DB
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
34/42
Demo: Netbeans, JPA com Hibernate e Faces
3. Escolha o framework JSF
4. Em File -> New File, escolhaPersistence - > Entity from DB
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
35/42
Demo: Netbeans, JPA com Hibernate e Faces
5. Escolha uma conexo JDBCque voc tenha configurado najanela Runtime, ou escolha aconexo pr-configurada para oJava DB do NetBeans.
6. Selecione a(s) tabela(s) que
deseja reverter em classes Entity.
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
36/42
Demo: Netbeans, JPA com Hibernate e Faces
7. Coloque o nome do
pacote das classes e emseguida clique em CreatePersistence Unit
8. Para trabalhar com Hibernateclique em New PersistenceLibrary.
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
37/42
Demo: Netbeans, JPA com Hibernate e Faces
9. Digite Hibernate no nome da biblioteca
e adicione todos os seguintes Jars:
-hibernate3.jar-jars do hibernate/lib
-hibernate-entitymanager.jar-jars do hibernate-entitymanager/lib
Clicando em OK e finish o NetBeans vaigerar as entidades / entity classes. Basta
agora nos prximos passos, gerar aspginas JSF.
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
38/42
Demo: Netbeans, JPA com Hibernate e Faces
10. Clique em File -> New File e
escolha JSF Pages from Entity
11. Escolha as entidades que desejagerar as pginas de CRUD.
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
39/42
Demo: Netbeans, JPA com Hibernate e Faces
12. Agora clique em Finishpara gerar automaticamentepginas JSF e controladoresde pginas.
Opcionalmente voc poderescolhar um sub-diretrioWeb para o NetBeans gravaras pginas e o package dos
controladores / managedbeans.
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
40/42
Demo: Netbeans, JPA com Hibernate e Faces
13. O penltimo passo adicionar a bilbioteca Java DB Driver ou o
driver JDBC do seu banco de dados.
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
41/42
Demo: Netbeans, JPA com Hibernate e Faces
14. Clique em Run e voc ver o resultado, um menu com a entidades
geradas que permitem o acesso a listagem de dados para edio, adio ouexcluso dos dados.
8/3/2019 Java e Banco de Dados JDBC Hibernate JPA e EJB 3
42/42
Concluses
O que j era bom (Hibernate 3), ficou ainda melhor! (3.2
com Persistence API);
O foco das especificaes na facilidade de uso (ex. EJB,
Faces, Java 5) comea a fazer diferena no mercado.
Voc ainda escreve cdigo SQL???