java e banco de dados jdbc hibernate jpa e ejb 3

Upload: marlon-santos

Post on 06-Apr-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

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