Este documento apresenta uma introdução aos principais frameworks Java EE para desenvolvimento de aplicações web: Java Server Faces (JSF), Java Persistence API (JPA) e Context Dependency Injection (CDI). A apresentação inclui uma explicação dos conceitos e funcionalidades de cada framework, como JSF permite a criação de interfaces gráficas web, JPA mapeia objetos Java para bancos de dados e CDI gerencia o ciclo de vida de componentes e injeção de dependências. A apresentação termina com uma demonstração prática do uso conjunto destes frameworks.
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 - Dividir e conquistar
Beleza vs Funcionamento
Código Organizado
Manutenção Fácil
Sabe aonde achar o erro
Globalcode – Open4education
7. 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
8. 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
15. 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
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 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
25. 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
29. 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
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 venha o código
Demonstração
Globalcode – Open4education
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)
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)
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)
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;
* Demonstrar o exemplo de configuração do JPA, definindo as configurações do PersistenceContext e também do provider específico.
* Demonstrar um exemplo de utilização do JPA, utilizando os métodos do EntityManager para realizar o processo de persistência dos Entity JavaBeans.