Vous êtes sur la page 1sur 42

Java e Banco de Dados: JDBC, Hibernate e JPA

Globalcode open4education

Agenda
Histrico sobre persistncia Tecnologias populares Hibernate clssico Java Persistence API Hibernate & JPA Demo

Globalcode open4education

Agenda
Histrico sobre persistncia Tecnologias populares Hibernate clssico Java Persistence API Hibernate & JPA Demo

Globalcode open4education

Persistncia
Capacidade de gravarmos dados em memrias no volteis
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;

Globalcode open4education

Agenda
Histrico sobre persistncia Tecnologias populares Hibernate clssico Java Persistence API Hibernate & JPA Demo

Globalcode open4education

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

Globalcode open4education

JDBC
API do Java para acesso a banco de dados; Trabalha com esquema de Driver (4 tipos):
JDBC / ODBC
Bridge para comunicao com Drivers Windows

Nativo
Cdigo de acesso ao DB escrito em C / C++;

Middleware Driver
DB acessado via middleware especializado

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

Globalcode open4education

Demo JDBC

Globalcode open4education

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;


9 Globalcode open4education

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;
10 Globalcode open4education

Agenda
Histrico sobre persistncia Tecnologias populares Hibernate clssico Java Persistence API Hibernate & JPA Demo

11

Globalcode open4education

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;

12

Globalcode open4education

Porque utilizar?
Suporte
pode ser contratado comercialmente ou pode se recorrer a uma comunidade extremamente ativa nos fruns de discusso;

Padro De Facto
amplamente adotado pelo mercado superando as especificaes EJB 2.x e JDO;

Conceitos do projeto Hibernate


foram adotados para os entity beans segundo a especificao EJB 3;

Nmero de profissionais

13

Globalcode open4education

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)
14 Globalcode open4education

XMLs
Um hibernate-config.xml configurando o JDBC e dialeto:

Devemos criar um XML por entidade para mapeamento;


15 Globalcode open4education

XMLs
Um xml para cada definio de entidade, neste caso chamamos o arquivo abaixo de Cliente.hbm.xml:

16

Globalcode open4education

Salvar e Remover

17

Globalcode open4education

Cdigo Java Ler clientes

18

Globalcode open4education

Relacionamentos
Podemos definir as associaes / composies dos nossos objetos. Vejamos um exemplo para a classe Pedido:

19

Globalcode open4education

Relacionamentos
Neste caso estamos definindo que um Pedido contm uma coleo de itens (um-para-muitos):

Um Pedido tem um Cliente (muitos-para-um)

20

Globalcode open4education

A classe Pedido

Totalmente simples, com atributos encapsulados por getters e setters!


21 Globalcode open4education

Resumo Hibernate Clssico


Conquistou uma grande comunidade devido sua simplicidade e competncia; Tem capacidades para gerenciamento de estratgias de recuperao de objetos compostos; Aumenta a produtividade; Em muitos casos, o cdigo SQL gerado pelo Hibernate superior ao cdigo humano;
22 Globalcode open4education

O fenmeno XDoclet
Diversas tecnologias passaram a utilizar documentos XML como parte da implementao e configurao de um framework:
Struts, Hibernate, EJBs, Java Web Components, Log4J, Tiles, etc.

Resultado
um emaranhado de XMLs para gerenciar;

Soluo
usar comentrios no formato JavaDoc para inserir meta-dados e configuraes no cdigo Java.
23 Globalcode open4education

O fenmeno XDoclet

O Xdoclet estende o JavaDoc, criando anotaes no estilo @XPTO para gerar arquivos XML para os frameworks.

24

Globalcode open4education

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;
25 Globalcode open4education

O fenmeno XDoclet
No Java 1.5 a anotaes so nativas, ou seja, no precisamos colocar em comentrios. Ex.:

26

Globalcode open4education

Agenda
Histrico sobre persistncia Tecnologias populares Hibernate clssico Java Persistence API Hibernate & JPA Demo

27

Globalcode open4education

Persistence API
Parte resultante da especificao de EJB 3.0 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 do 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

28

Globalcode open4education

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;
29 Globalcode open4education

Agenda
Histrico sobre persistncia Tecnologias populares Hibernate clssico Java Persistence API Hibernate & JPA Demo

30

Globalcode open4education

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;
31 Globalcode open4education

Agenda
Histrico sobre persistncia Tecnologias populares Hibernate clssico Java Persistence API Hibernate & JPA Demo

32

Globalcode open4education

Netbeans, JPA, Hibernate e JSF


1. Crie um novo projeto Web

2. Digite o nome do projeto e desabilite o cdigo 1.4

33

Globalcode open4education

Netbeans, JPA, Hibernate e JSF


3. Escolha o framework JSF

4. Em File -> New File, escolha Persistence - > Entity from DB

34

Globalcode open4education

Netbeans, JPA, Hibernate e JSF

5. Escolha uma conexo JDBC que voc tenha configurado na janela Runtime, ou escolha a conexo pr-configurada para o Java DB do NetBeans.

6. Selecione a(s) tabela(s) que deseja reverter em classes Entity.

35

Globalcode open4education

Netbeans, JPA, Hibernate e JSF


7. Coloque o nome do pacote das classes e em seguida clique em Create Persistence Unit

8. Para trabalhar com Hibernate clique em New Persistence Library.


36 Globalcode open4education

Netbeans, JPA, Hibernate e JSF

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 vai gerar as entidades / entity classes. Basta agora nos prximos passos, gerar as pginas JSF.

37

Globalcode open4education

Netbeans, JPA, Hibernate e JSF


10. Clique em File -> New File e escolha JSF Pages from Entity

11. Escolha as entidades que deseja gerar as pginas de CRUD.

38

Globalcode open4education

Netbeans, JPA, Hibernate e JSF

12. Agora clique em Finish para gerar automaticamente pginas JSF e controladores de pginas. Opcionalmente voc poder escolhar um sub-diretrio Web para o NetBeans gravar as pginas e o package dos controladores / managed beans.

39

Globalcode open4education

Netbeans, JPA, Hibernate e JSF


13. O penltimo passo adicionar a bilbioteca Java DB Driver ou o driver JDBC do seu banco de dados.

40

Globalcode open4education

Netbeans, JPA, Hibernate e JSF


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 ou excluso dos dados.

41

Globalcode open4education

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???

42

Globalcode open4education