Implementando aplicativos Web com JSF, CDI e
                    JPA

   Trilha – Java EE University
              Rodrigo Cândido da Silva




                                         Globalcode – Open4education
Agenda

   Java Server Faces (JSF)
   Java Persistence API (JPA)
   Context Dependency Injection (CDI)
   Demo




                                        Globalcode – Open4education
JavaServer Faces

JSF


                   Globalcode – Open4education
JSF ( Java Server Faces)


   Java
   Especificação
   Integração
   Ajax Nativo




                           Globalcode – Open4education
JSF: o que é?
Java Server Faces
Framework MVC proposto em 2001
JSR 127 (1.0 e 1.1, 2001), JSR 252 (1.2, 2004), JSR 314 (2.0,2007)
Padronizou o desenvolvimento de interface de usuário web
Definido por grupo de especialistas composto de empresas e pessoas
  físicas
Suportado pelos containers homologados para JEE 5 ou superior
Baseado na tecnologia Servlets
Ed Burns, Roger Kitain - Sun



                 http://java.sun.com/javaee/javaserverfaces/

                                                        Globalcode – Open4education
MVC - Dividir e conquistar


  Beleza vs Funcionamento
  Código Organizado
  Manutenção Fácil
  Sabe aonde achar o erro




                             Globalcode – Open4education
JSF: principais componentes
J2EE Web Container                                 J2EE EJB
                                                   Container

JSF e J2EE

  javax.faces




 Controller     View              Model

  Servlet       Java     Custom   JavaBeans               EJB
                Server   Tag
                Pages



                                              Globalcode – Open4education
Criação de páginas JSF


   Página JSF         Links, formulários, imagens,          Request
                      combo-box, tabelas, etc…
                                                          Managed
                                                          Bean
  Tags: JSF HTML    Expression Language: EL
   Tags: JSF Core                                           Session
                      Através destas tags adicionamos
                      validação, conversão de dados,       Managed
                      listeners                            Bean


                        Dados para popular as tabelas,
                        combo-box, textos.               Application
                                                           Managed
                                                           Bean




                                                         Globalcode – Open4education
JSF: principais componentes
Página JSF
faces-config.xml




                     Managed Bean




                                    Globalcode – Open4education
Integração




             Globalcode – Open4education
Frameworks em JSF


  Basta baixar e usar




                        Globalcode – Open4education
Economizando código com o Facelets


  Economiza Código
  Evita “mokey codes”
  Previne dores de Cabeça
  Manutenção rápida




                                     Globalcode – Open4education
Criando uma vez e usando quantas quiser


   Composite Component




                                          Globalcode – Open4education
Java Persistence API

JPA


                       Globalcode – Open4education
Java Persistence API

Primeira especificação (padrão) de mapeamento de objetos
   Java para base de dados relacional
   Integração com outros frameworks
                Hibernate é uma implementação de JPA
                TopLink Essencials é uma implementação de JPA (RI)


POJO (Plain Old Java Objects)  Entidades
   Mapeamento via metadados (annotation Java 5)

Pode ser utilizado fora de containeres EJBs (ligthweigth
  container)

Uso de injeção de dependência ao invés de lookups JNDI
                                                            Globalcode – Open4education
Java Persistence API




                       Globalcode – Open4education
Java Persistence API




                       Globalcode – Open4education
Java Persistence API
EntityManager   (javax.persistence)



                                      (B) find / query
                                      (C) persist
                                      (D) clear / serialização
                                      (E) merge
                                      (F) remove




                                             Globalcode – Open4education
Java Persistence API
Persistence Unit




                       Globalcode – Open4education
Java Persistence API




                       Globalcode – Open4education
Context Dependency Injection

CDI


                               Globalcode – Open4education
CDI (JSR-299)
CDI = Context Dependency Injection
Novo modelo para gerenciamento de beans e
  injeção de dependência
Nova definição para escopos de aplicação
Também conhecido como “Web Beans”
Integra as camadas web e negócio da aplicação
  Facilita a implementação das aplicações que utilizam
    tecnologias como JSF e EJB (Java EE)



                                             Globalcode – Open4education
CDI (JSR-299)
Gerenciamento de ciclo de vida de componentes
  statefull
Provê um mecanismo de DI typesafe
Disponibiliza mecanismo de eventos facilitando o
  desenvolvimento com baixo acoplamento
Tem um mecanismo de Interceptors e Decorators
Possibilita a criação de extensões portáveis para
  qualquer implementação
Integração com EL

                                        Globalcode – Open4education
CDI no Java EE 6




                   Globalcode – Open4education
CDI Managed Beans
Nova definição para
“beans
Instâncias são
gerenciadas pelo
container
Serviços disponíveis
  Injeção de Dependência
  Ciclo de vida
  Interceptors
  Events

                           Globalcode – Open4education
CDI Managed Beans




                    Globalcode – Open4education
Configuração CDI




                   Globalcode – Open4education
Hello World




              Globalcode – Open4education
O que pode ser injetado
CDI Managed Beans (POJO)
Objetos retornados por @Produces
EJB Session Bean (local ou remoto)
Java EE Resources (DataSource, JMS)
JTA UserTransaction
EntityManager (JPA)
Bean Validation Factory
Destination e ConnectionFactory JMS


                                      Globalcode – Open4education
Principais Recursos
  Injection Points
  Qualifiers
  Alternatives
  EL Names
  Producer Methods
  Java EE Resources
  Scopes and Contexts
  Interceptors
  Stereotypes
  Events

                        Globalcode – Open4education
E que venha o código


  Demonstração




                       Globalcode – Open4education
Perguntas e Respostas




               ?
                        Globalcode – Open4education
Obrigado




           Globalcode – Open4education

TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA

  • 1.
    Implementando aplicativos Webcom JSF, CDI e JPA Trilha – Java EE University Rodrigo Cândido da Silva Globalcode – Open4education
  • 2.
    Agenda Java Server Faces (JSF) Java Persistence API (JPA) Context Dependency Injection (CDI) Demo Globalcode – Open4education
  • 3.
    JavaServer Faces JSF Globalcode – Open4education
  • 4.
    JSF ( JavaServer Faces) Java Especificação Integração Ajax Nativo Globalcode – Open4education
  • 5.
    JSF: o queé? Java Server Faces Framework MVC proposto em 2001 JSR 127 (1.0 e 1.1, 2001), JSR 252 (1.2, 2004), JSR 314 (2.0,2007) Padronizou o desenvolvimento de interface de usuário web Definido por grupo de especialistas composto de empresas e pessoas físicas Suportado pelos containers homologados para JEE 5 ou superior Baseado na tecnologia Servlets Ed Burns, Roger Kitain - Sun http://java.sun.com/javaee/javaserverfaces/ Globalcode – Open4education
  • 6.
    MVC - Dividire conquistar Beleza vs Funcionamento Código Organizado Manutenção Fácil Sabe aonde achar o erro Globalcode – Open4education
  • 7.
    JSF: principais componentes J2EEWeb Container J2EE EJB Container JSF e J2EE javax.faces Controller View Model Servlet Java Custom JavaBeans EJB Server Tag Pages Globalcode – Open4education
  • 8.
    Criação de páginasJSF Página JSF Links, formulários, imagens, Request combo-box, tabelas, etc… Managed Bean Tags: JSF HTML Expression Language: EL Tags: JSF Core Session Através destas tags adicionamos validação, conversão de dados, Managed listeners Bean Dados para popular as tabelas, combo-box, textos. Application Managed Bean Globalcode – Open4education
  • 9.
    JSF: principais componentes PáginaJSF faces-config.xml Managed Bean Globalcode – Open4education
  • 10.
    Integração Globalcode – Open4education
  • 11.
    Frameworks em JSF Basta baixar e usar Globalcode – Open4education
  • 12.
    Economizando código como Facelets Economiza Código Evita “mokey codes” Previne dores de Cabeça Manutenção rápida Globalcode – Open4education
  • 13.
    Criando uma veze usando quantas quiser Composite Component Globalcode – Open4education
  • 14.
    Java Persistence API JPA Globalcode – Open4education
  • 15.
    Java Persistence API Primeiraespecificação (padrão) de mapeamento de objetos Java para base de dados relacional Integração com outros frameworks Hibernate é uma implementação de JPA TopLink Essencials é uma implementação de JPA (RI) POJO (Plain Old Java Objects)  Entidades Mapeamento via metadados (annotation Java 5) Pode ser utilizado fora de containeres EJBs (ligthweigth container) Uso de injeção de dependência ao invés de lookups JNDI Globalcode – Open4education
  • 16.
    Java Persistence API Globalcode – Open4education
  • 17.
    Java Persistence API Globalcode – Open4education
  • 18.
    Java Persistence API EntityManager (javax.persistence) (B) find / query (C) persist (D) clear / serialização (E) merge (F) remove Globalcode – Open4education
  • 19.
    Java Persistence API PersistenceUnit Globalcode – Open4education
  • 20.
    Java Persistence API Globalcode – Open4education
  • 21.
    Context Dependency Injection CDI Globalcode – Open4education
  • 22.
    CDI (JSR-299) CDI =Context Dependency Injection Novo modelo para gerenciamento de beans e injeção de dependência Nova definição para escopos de aplicação Também conhecido como “Web Beans” Integra as camadas web e negócio da aplicação Facilita a implementação das aplicações que utilizam tecnologias como JSF e EJB (Java EE) Globalcode – Open4education
  • 23.
    CDI (JSR-299) Gerenciamento deciclo de vida de componentes statefull Provê um mecanismo de DI typesafe Disponibiliza mecanismo de eventos facilitando o desenvolvimento com baixo acoplamento Tem um mecanismo de Interceptors e Decorators Possibilita a criação de extensões portáveis para qualquer implementação Integração com EL Globalcode – Open4education
  • 24.
    CDI no JavaEE 6 Globalcode – Open4education
  • 25.
    CDI Managed Beans Novadefinição para “beans Instâncias são gerenciadas pelo container Serviços disponíveis Injeção de Dependência Ciclo de vida Interceptors Events Globalcode – Open4education
  • 26.
    CDI Managed Beans Globalcode – Open4education
  • 27.
    Configuração CDI Globalcode – Open4education
  • 28.
    Hello World Globalcode – Open4education
  • 29.
    O que podeser injetado CDI Managed Beans (POJO) Objetos retornados por @Produces EJB Session Bean (local ou remoto) Java EE Resources (DataSource, JMS) JTA UserTransaction EntityManager (JPA) Bean Validation Factory Destination e ConnectionFactory JMS Globalcode – Open4education
  • 30.
    Principais Recursos Injection Points Qualifiers Alternatives EL Names Producer Methods Java EE Resources Scopes and Contexts Interceptors Stereotypes Events Globalcode – Open4education
  • 31.
    E que venhao código Demonstração Globalcode – Open4education
  • 32.
    Perguntas e Respostas ? Globalcode – Open4education
  • 33.
    Obrigado Globalcode – Open4education

Notas do Editor

  • #16 Comentar sobre a história do surgimento do JPA (como por exemplo a contribuição do Hibernate e do Gavin King para esta especificação) Falar sobre os benefícios na utilização de JPA em uma aplicação que necessita de persistência como (aumento da produtividade, diminuição da complexidade, ganho de performance, etc)
  • #17 Comentar sobre o modelo da arquitetura do JPA, que possui uma similaridade com o modelo JDBC, composto por uma API de interfaces e pelos JPA providers (Hibernate, EclipseLink, Castor, etc)
  • #18 Comentar sobre a facilidade de implementação do JPA utilizando anotações, simplificando muito o mapeamento das entidades e também utilizando-se do conceito de “defaults” amplamente utilizado pelo Java EE 5. Demonstrar o exemplo de um JavaBean mapeado comentando sobre algumas anotações principais (@Entity, @Table, @Id, @Column)
  • #19 Comentar sobre o conceito do objeto EntityManager dentro do JPA, responsável pela publicação dos métodos de persistência (find, persist, merge, remove) e também pelo gerenciamento dos Entity JavaBeans;
  • #20 * Demonstrar o exemplo de configuração do JPA, definindo as configurações do PersistenceContext e também do provider específico.
  • #21 * Demonstrar um exemplo de utilização do JPA, utilizando os métodos do EntityManager para realizar o processo de persistência dos Entity JavaBeans.