Download - MC - Java Enterprise Edition 6 (Java EE)
Slide 1 Globalcode
Mini-curso Gratuito
Rodrigo Cândido da Silva VOffice / Globalcode
Slide 2 Globalcode
Mini-curso Gratuito
http://open4education.googlecode.com/
Slide 3 Globalcode
Doações
• Entidade Orionópolis Catarinense
É uma entidade filantrópica, sem fins lucrativos, que abriga gratuitamente em sistema de vila e regime de internato: idosos, crianças e adultos portadores de deficiências e multideficiencias física e mental que vivem em estado de abandono familiar e econômico.
Atualmente abrigam 67 pessoas
Para Maiores Informações http://orionopolis.floripa.com.br
Telefone – (048) 3343-0087
• MUITO OBRIGADO À TODOS !!!
Slide 4 Globalcode
Palestrante
Slide 5 Globalcode
Objetivo
Conhecer a plataforma Java Enterprise Edition 6 e entender as principais diferenças desta versão
em relação as versões anteriores
Slide 6 Globalcode
Agenda
" Plataforma Java EE " Principais Tecnologias (APIs)
" Profiles " Java Servlet 3.0 " JSF 2.0 " CDI " EJB 3.1 " JPA 2.0
" Comparativo de Versões " Perguntas e Respostas
Slide 7 Globalcode
Jogo Rápido
• Quem trabalha com Java EE? Servlet?
JSF?
JPA?
EJB?
• Quem já estudou alguma funcionalidade do Java EE 6?
• Quem está interessado em se atualizar?
• Quem gostou do jogo do Brasil ontem? :/
Slide 8 Globalcode
Agenda
" Plataforma Java EE " Principais Tecnologias (APIs)
" Profiles " Java Servlet 3.0 " JSF 2.0 " CDI " EJB 3.1 " JPA 2.0
" Comparativo de Versões " Perguntas e Respostas
Slide 9 Globalcode
Plataforma Java
• Desenvolvimento de software robusto para diferentes tipos de dispositivos
PC, celular, palmtop, robôs, etc.
• Software Multiplataforma “Escreva uma vez e execute em qualquer lugar...”
Código não precisa ser recompilado para executar em outro sistema operacional
• Máquina Virtual (Java Virtual Machine - JVM)
Responsável por oferecer a flexibilidade de sistema operacional para um software Java
• Mantida pela comunidade de desenvolvedores por meio do JCP (Java Community Process)
Slide 10 Globalcode
Plataforma Java
• A plataforma é dividida em três partes:
Java Standard Edition (Java SE) Base do Java que contém as principais APIs
Java Enterprise Editon (Java EE) Versão de Java para desenvolvimento de aplicações Web e enterprise que
rodam em servidores padronizados
Java Micro Edition (Java ME) Redução da plataforma Standard para dispositivos móveis como PDA e
celulares
Slide 11 Globalcode
Java Enterprise Edition
• Suporte ao desenvolvimento de aplicações “enterprise” Aplicações distribuídas, seguras, escaláveis, de alta
disponibilidade e com baixo custo de manutenção
• Plataforma para desenvolvimento de software de pequeno, médio e grande porte em múltiplas camadas de componentes Componentes “rodam” em um servidor Java EE
Slide 12 Globalcode
Java Enterprise Edition
Slide 13 Globalcode
Java Enterprise Edition
• Containers Java EE
Slide 14 Globalcode
Java Enterprise Edition
• Serviços oferecidos pelos containeres Java EE: Gestão de memória, ciclo de vida de objetos e estado de
objetos
Conexões, Transações, Serviço de nomes
Segurança
Tolerância a falhas
Integração
WebServices
Clustering
Alta disponibilidade
Confiabilidade...
Slide 15 Globalcode
Agenda
" Plataforma Java EE " Principais Tecnologias (APIs)
" Profiles " Java Servlet 3.0 " JSF 2.0 " CDI " EJB 3.1 " JPA 2.0
" Comparativo de Versões " Perguntas e Respostas
Slide 16 Globalcode
Containers (Java EE 5)
Slide 17 Globalcode
Containers (Java EE 5)
• Web Container Trabalha em conjunto com um Servidor HTTP para oferecer
suporte aos componentes da camada Web Tomcat (Apache)
Jetty
JRun (Adobe)
• EJB Container É o servidor de componentes transacionais EJB
OpenEJB (Apache) *
Containeres específicos dos fabricantes de servidores de aplicação
Slide 18 Globalcode
Profiles
• Define um sub-set de APIs do Java EE para rodar determinado tipo de aplicação (arquitetura)
• Dois profiles foram definidos neste momento pela especificação do Java Enterprise Web Profile
Semelhante a idéia do Web container, mas com mais funcionalidades incorporadas
Full Profile Servidor Java EE completo
Slide 19 Globalcode
Profiles
Slide 20 Globalcode
Profiles
Slide 21 Globalcode
Agenda
" Plataforma Java EE " Principais Tecnologias (APIs)
" Profiles " Java Servlet 3.0 " JSF 2.0 " CDI " EJB 3.1 " JPA 2.0
" Comparativo de Versões " Perguntas e Respostas
Slide 22 Globalcode
Java Servlet
• Aplicações que rodam no servidor e respondem requisições de clientes Web
Slide 23 Globalcode
Java Servlet 3.0
• Novos Recursos Configuração por Anotações
Registro Dinâmico de Componentes
Web Fragments
Servlet Container Initializer
Resources Sharing
Programatic Login / Logout
Asynchronous Support
Slide 24 Globalcode
Java Servlet 3.0
• Configuração por Anotações @WebServlet
Define o mapeamento do componente Servlet
@WebFilter Define o mapeamento do componente Filter
@WebListener Define o mapeamento do componente Listener
@WebInitParam Define um parâmetro de inicialização
@ServletSecurity Define as constraints de segurança
@MultipartConfig Utilizado para upload de arquivos
Slide 25 Globalcode
Java Servlet 3.0
• @WebServlet
Slide 26 Globalcode
Java Servlet 3.0
• @WebFilter
Slide 27 Globalcode
Java Servlet 3.0
• @WebListener
Slide 28 Globalcode
Java Servlet 3.0
• @WebInitParam
Slide 29 Globalcode
Java Servlet 3.0
• @ServletSecurity
Slide 30 Globalcode
Java Servlet 3.0
• Registro Dinâmico de Componentes Carregamento dinâmico de Servlets, Filters e Listeners
Executado durante a inicialização do ServletContext
Registro ServletContext#addServlet (#addFilter | #addListener)
Criação e Registro ServletContext#createServlet (#createFilter | #createListener)
Lookup ServletContext#getServlet (#getFilter | #getListener)
Slide 31 Globalcode
Java Servlet 3.0
• Registro Dinâmico de Componentes
Slide 32 Globalcode
Java Servlet 3.0
• Web Fragments Define um pedaço do arquivo à ser incorporado ao web.xml Pode ser definido em diretórios META-INF de arquivos JARs
adicionados no classpath da aplicação web (WEB-INF/lib) Ideal para configuração de frameworks (Struts, Spring, GWT)
Sintaxe praticamente idêntica ao arquivo web.xml tradicional, com pequenas modificações na ordem dos elementos
Caso haja conflito de nomes (Servlets, Filters, etc) os componentes definidos no web.xml tem prioridade
Uma aplicação web pode ter múltiplos web fragments
É definido pela tag <web-fragment>
Slide 33 Globalcode
Java Servlet 3.0
• Web Fragments
Slide 34 Globalcode
Java Servlet 3.0
• Servlet Container Initializer Mecanismo para inicialização de recursos (objetos) através de
bibliotecas “terceiras” incorporados na aplicação web
Executado antes de qualquer Listener durante a fase de inicialização da aplicação
Para implementação Implementar a interface
– ServletContainerInitializer
Definir quais tipos (anotações) de classes serão inspecionadas
– @HandlesTypes
Esta classe intercepta os componentes de acordo com os handles types definidos e executa o método onStartup(…)
Slide 35 Globalcode
Java Servlet 3.0
• Servlet Container Initializer
Slide 36 Globalcode
Java Servlet 3.0
• Resources Sharing Possibilidade de adicionar JSPs dentro de arquivos JARs
existentes no classpath (WEB-INF/lib) da aplicação web
Devem ser organizados na seguinte estrutura WEB-INF/lib/[*.jar]/META-INF/resources
JSPs definidos com o mesmo nome no diretório da aplicação web terão prioridade
Exemplo de utilização mywebapp.war
– /WEB-INF/lib/shared.jar!/META-INF/resources/shared.jsp
Endereço de acesso
– http://server/mywebapp/shared.jsp
Slide 37 Globalcode
Java Servlet 3.0
• Programatic Login / Logout Adicionados novos métodos na Servlet API para tratamento de
login e logout da aplicação
Todo processo de login e logout da aplicação pode ser manipulado através de programação Não tem mais necessidade da definição <login-config>
Métodos disponíveis HttpServletRequest.login(String username, String password)
HttpServletRequest.authenticate(HttpServletResponse)
HttpServletRequest.logout()
Slide 38 Globalcode
Java Servlet 3.0
• Asynchronous Support Modelo avançado para execução the Threads
Servlet não precisa mais esperar pela resposta de um outro recurso demorado para que sua Thread possa continuar executando
Exemplos para utilização Conexões JDBC não disponíveis, retorno JMS, processos longos
Servlets e Filters suportam esta funcionalidade, mas devem ser sinalizados como assíncronos
Para sinalizar suporte a este mecanismo @WebServlet(asynchSupported=true)
<async-supported>true</async-supported>
registration.setAsyncSupported(true);
Slide 39 Globalcode
Java Servlet 3.0
• Asynchronous Support
Slide 40 Globalcode
Java Servlet 3.0
• Asynchronous Support
Slide 41 Globalcode
Java Servlet 3.0
• Asynchronous Support
Slide 42 Globalcode
Agenda
" Plataforma Java EE " Principais Tecnologias (APIs)
" Profiles " Java Servlet 3.0 " JSF 2.0 " CDI " EJB 3.1 " JPA 2.0
" Comparativo de Versões " Perguntas e Respostas
Slide 43 Globalcode
JavaServer Faces (JSF)
• Características Framework para implementação de interfaces gráficas das
aplicações Web baseado no modelo de componentes
Incorpora características de um framework MVC para Web e um modelo de interfaces baseados em eventos Separação entre visualização e regras de negócio
Visualização pode ser feita por diferente renderizadores
Padrão de implementação para camada Web Especificação Java EE
Amplo suporte das IDEs (Eclipse, NetBeans) “Toolability = Ferramentabilidade”
Slide 44 Globalcode
J2EE Web Container J2EE EJB Container
Controller Model View
Servlet JavaBeans Java Server Pages
Custom Tag
EJB
JavaServer Faces
JavaServer Faces (JSF)
Slide 45 Globalcode
JavaServer Faces (JSF) 2.0
• Novos Recursos Configuração por Anotações
Integração com Facelets
AJAX Support
Composite Components
Novas Regras de Navegação
View Parameters
Slide 46 Globalcode
JavaServer Faces (JSF) 2.0
• Configuração por Anotações @ManagedBean
@ManagedProperty
JSF Scopes @ApplicationScoped, @RequestScoped, @SessionScoped, @NoneScoped,
@ViewScoped, @CustomScoped
@FacesConverter
@FacesValidator
@FacesRenderer
@FacesBehavior
@ResourceDependency
@ListenerFor
Slide 47 Globalcode
JavaServer Faces (JSF) 2.0
• @ManagedBean
Slide 48 Globalcode
JavaServer Faces (JSF) 2.0
• @FacesConverter
Slide 49 Globalcode
JavaServer Faces (JSF) 2.0
• @FacesValidator
Slide 50 Globalcode
JavaServer Faces (JSF) 2.0
• @FacesBehavior
• @FacesRenderer
Slide 51 Globalcode
JavaServer Faces (JSF) 2.0
• Integração com Facelets Define o padrão para templating e visualização
Utiliza XHTML ao invés de JSP JSP encontra-se @Deprecated
Não podemos adicionar código Java no XTHML
Incorporação das classes do Facelets na JSF API
Mantém compatibilidade com versões anteriores
Definido pela biblioteca (ui) http://java.sun.com/jsf/facelets
Principais Facelets tags <ui:composition>
<ui:define>
<ui:insert> <ui:param>
Slide 52 Globalcode
JavaServer Faces (JSF) 2.0
Slide 53 Globalcode
JavaServer Faces (JSF) 2.0
• AJAX Support Suporte à processamento de requisições AJAX integrado ao
ciclo de vida dos componentes JSF
Inspirado nos frameworks RichFaces, IceFaces, DynaFaces…
Define uma Javascript API padronizada Homologada na Open AJAX Alliance
Suporta AJAX request, callbacks, error handling
Define a tag <f:ajax> para suporte AJAX aos componentes
Slide 54 Globalcode
JavaServer Faces (JSF) 2.0
• AJAX Support Javascript API
Slide 55 Globalcode
JavaServer Faces (JSF) 2.0
• AJAX Support <f:ajax> Tag
Slide 56 Globalcode
JavaServer Faces (JSF) 2.0
• Composite Components Define uma maneira facilitada para criação e extensão de
componentes JSF
Promove a reusabilidade visual
Suporte facilitado pelas IDEs (Eclipse, NetBeans)
Definido pela biblioteca (cc) http://java.sun.com/jsf/composite
Principais tags <cc:implementation>
<cc:interface>
<cc:attribute>
<cc:actionSource>
Slide 57 Globalcode
JavaServer Faces (JSF) 2.0
• Composite Components
Slide 58 Globalcode
JavaServer Faces (JSF) 2.0
• Composite Components
Slide 59 Globalcode
JavaServer Faces (JSF) 2.0
• Novas Regras de Navegação Navegação Condicional
Possibilidade de mapeamento no faces-config.xml, somente realizando o redirecionamento com base em um condicional
Slide 60 Globalcode
JavaServer Faces (JSF) 2.0
• Novas Regras de Navegação Navegação Implícita
Modelo de navegação direcionando o retorno da ação para uma view específica, através do nome
Slide 61 Globalcode
JavaServer Faces (JSF) 2.0
• View Parameters Propagação de request parameters usando HTTP GET
Possibilidade de criação de Bookmarkable URLs
Principais tags <f:metadata>
– Deve ser incluída dentro da tag <f:view>
<f:viewParam>
– Associa os request GET parameters com o JSF model
– Suporta Converters, Validators, etc
<h:link>
<h:button>
Slide 62 Globalcode
JavaServer Faces (JSF) 2.0
• View Parameters
http://server/view.xhtml?dept=mens&category=sport&sort=2
Slide 63 Globalcode
Agenda
" Plataforma Java EE " Principais Tecnologias (APIs)
" Profiles " Java Servlet 3.0 " JSF 2.0 " CDI " EJB 3.1 " JPA 2.0
" Comparativo de Versões " Perguntas e Respostas
Slide 64 Globalcode
Injeção de Dependência (IoC)
• Mecanismo de “injeção” de recursos necessários a um componente de forma automática Sem a presença de instruções explícitas para acessar o
recurso
• Exemplo: O componente de negócios A depende do componente de
negócios B e do pool de conexões C.
A B
C
Slide 65 Globalcode
Injeção de Dependência (IoC)
• Sem injeção de dependência: Código fonte do componente A contém instruções para
“buscar” o componente B e o recurso C
A
B C
Serviço de Nomes
“ejb/componenteB”
“jdbc/dataSourceC”
lookups
Slide 66 Globalcode
Injeção de Dependência (IoC)
A
B C
Serviço de Nomes
“ejb/componenteB”
“jdbc/dataSourceC”
injeção
class ComponenteA {
@EJB(name=“ejb/componenteB”) InterfaceB b;
@Resource(name=“jdbc/dataSourceC”) DataSource c;
}
• Com injeção de dependência:
Slide 67 Globalcode
Injeção de Dependência (IoC)
• Exemplo de Utilização (Java EE 5)
Slide 68 Globalcode
Context Dependency Injection (CDI)
• O que é CDI (JSR-299)? Novo modelo para gerenciamento de injeção de dependência
(IoC) e de escopos de aplicação
Também conhecido como “Web Beans”
Integra as camadas web e transacional da aplicação
Facilita a implementação das aplicações que utilizam tecnologias como JSF e EJB
Para utilizar basta adicionar o arquivo beans.xml no diretório de configuração da aplicação (WEB-INF , META-INF)
Slide 69 Globalcode
Context Dependency Injection (CDI)
Quem pode receber injeção ? Managed Beans
EJB, Interceptor
Servlet, Filter, *Listener, JSP Tag Handler
Endpoints JAX-WS e Handlers
O que pode ser injetado ? Referências a EJBs e a Web Services
DataSource JDBC
Destination e ConnectionFactory JMS
UserTransaction
EntityManager (JPA)
Remote EJB references ManagedBeans (POJO)
Objetos retornados por @Produces
Slide 70 Globalcode
Context Dependency Injection (CDI)
• Novos Recursos Injection Points
Producer Methods and Fields
Qualifiers
Alternatives
Expression Language Names
Scopes and Contexts @ApplicationScoped, @RequestScoped, @SessionScoped,
@ConversationScoped
Interceptors
Stereotypes
Events
Slide 71 Globalcode
Context Dependency Injection (CDI)
• Injection Points - @Inject
Slide 72 Globalcode
Context Dependency Injection (CDI)
• Producer Methods and Fields - @Produces
Slide 73 Globalcode
Context Dependency Injection (CDI)
• Qualifiers - @Qualifier
Slide 74 Globalcode
Context Dependency Injection (CDI)
• Alternatives - @Alternative
Slide 75 Globalcode
Context Dependency Injection (CDI)
• Expression Language Names - @Named
Slide 76 Globalcode
Context Dependency Injection (CDI)
• Scopes and Contexts Define um modelo de escopos extensível
Podemos criar um @Singleton bean
Dependent scope - @Dependent Escopo padrão de todas classes
Significa que o objeto “injetado” encontra-se no mesmo escopo e tem o mesmo ciclo de vida do objeto cliente
Outros escopos disponíveis @ApplicationScoped, @RequestScoped
– Para qualquer web requests, web service, RMI, EJB
@SessionScoped
– Para qualquer servlet
@ConversationScoped
– Para JSF requests
Slide 77 Globalcode
Context Dependency Injection (CDI)
• Scopes and Contexts
Slide 78 Globalcode
Context Dependency Injection (CDI)
• Scopes and Contexts - @ConversationScoped
Slide 79 Globalcode
Context Dependency Injection (CDI)
• Interceptors
Slide 80 Globalcode
Context Dependency Injection (CDI)
• Stereotypes - @Stereotype
Slide 81 Globalcode
Context Dependency Injection (CDI)
• Events
Slide 82 Globalcode
Agenda
" Plataforma Java EE " Principais Tecnologias (APIs)
" Profiles " Java Servlet 3.0 " JSF 2.0 " CDI " EJB 3.1 " JPA 2.0
" Comparativo de Versões " Perguntas e Respostas
Slide 83 Globalcode
Enterprise JavaBeans (EJB)
• Características Plataforma para criação de aplicações de negócio portáveis,
robustas e reutilizáveis usando a linguagem Java
Componentes para construir aplicações sem precisar reinventar uma série de recursos e serviços Transação, Segurança, Persistencia
Modelo alto nível de objetos distribuídos Computação distribuída
Pode ser utilizado em aplicações Web e não Web
É o CICS do Java
Slide 84 Globalcode
Enterprise JavaBeans (EJB)
EJB Session Bean
Segu
ranç
a
Con
trol
e Tr
ansa
cion
al
Esca
labi
lidad
e
Queues Topics
Data Sources
Environment Entries
EJB
Infra Estrutura do Container
Slide 85 Globalcode
• Tipos de EJB: Session Bean
Representa um processo de negócio
Message-Driven Bean Trabalha de forma assíncrona
Entity Bean Representa um objeto persistente
Definido pela especificação JPA
Enterprise JavaBeans (EJB)
Slide 86 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Novos Recursos EJB Lite
Empacotamento Simplificado
Interface Opcional
Singleton EJB
Timer Service
Métodos Assíncronos
Nomes JNDI Padronizados
Embeddable API
Slide 87 Globalcode
• EJB Lite Sub-conjunto de funcionalidades direcionadas para deploy dos
EJBs no container Java EE Web Profile (.war)
Enterprise JavaBeans (EJB) 3.1
EJB Lite EJB Full
• Local Session Beans • CMT / BMT • Segurança Declarativa • Interceptors
• Message-Driven Beans (MDB) • Web Service Endpoints • 2.x / 3.x Remove View • Inter-operabilidade com RMI-IIOP • Timer service • Chamada assíncrona à metodos • 2.x Local View • CMP / BMP Entity Beans
Slide 88 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Empacotamento Simplificado Possibilita o deploy de componentes EJBs através de um .war
Somente disponível para os EJB Lite
ejb-jar.xml não é mais necessário
Java EE 5
Java EE 6
Slide 89 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Interface Opcional No-interface = Local View
Slide 90 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Singleton EJB Define um EJB que implementa o padrão Singleton
Uma única instância por aplicação enterprise
Abstrai a implementação deste padrão dentro do ambiente “enterprise” Publicação no diretório JNDI
Suporta estratégias e configurações para compartilhamento no acesso (locking)
Anotações @Singleton
@Lock
@AccessTimeout
@ConcurrencyManager
Slide 91 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Singleton EJB
Slide 92 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Singleton EJB
Slide 93 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Timer Service Define uma estrutura para execução baseada em calendários
Semântica baseada nos processos CRON
Criação feita pelo container no deploy da aplicação
Pode ser especificado por anotação ou através do ejb-jar.xml
Relativo ao current TimeZone
Sintaxe dos atributos minute = “30”
month = “Jan, Jul, Dec”
dayOfWeek = “Mon-Fri”
dayOfMonth = “Last Mon”
hour = “*”
minute = “*/10”
Slide 94 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Timer Service Processa na última sexta-feira de todo mês às 20:30 hrs no
horário local de São Paulo
Slide 95 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Métodos Assíncronos Mecanismo simples para realizar chamadas assíncronas para
uma aplicação enterprise (sem utilizar MDBs)
Disponível para utilização em Stateful, Stateless e Singleton EJBs
Definido pela anotação @Asynchronous Pode ser utilizada pela classe ou por método
Retorna um objeto Future<T> que representa o resultado em processamento assíncrono Future.isDone()
Future.isCancelled()
Future.get()
Future.cancel(boolean)
Slide 96 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Métodos Assíncronos
Slide 97 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Nomes JNDI Padronizados Definição padronizada de nomes para “lookup” dos EJBs
remotos e locais
Eleva a portabilidade de aplicações clientes
Lookup global java : global [/<app-name>] /<module-name> /<ejb-name>
Lookup dentro da aplicação java : app [/<module-name>] /<ejb-name>
Lookup dentro de um mesmo módulo (JAR, WAR) java : module /<ejb-name>
Slide 98 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Nomes JNDI Padronizados
• Se for realizado o deploy em “componentes.jar” java:global/componentes/MyEJB
java:app/MyEJB
java:module/MyEJB
Slide 99 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Embeddable API Biblioteca (API) customizada para rodar componentes EJBs
fora do container (servidor) Java EE
Implementa o mesmo comportamento (ciclo de vida, pooling, IoC) simulando um container Java EE
Ideal para utilização em testes unitários Utilização de Mock components
Slide 100 Globalcode
Enterprise JavaBeans (EJB) 3.1
• Embeddable API
Slide 101 Globalcode
Agenda
" Plataforma Java EE " Principais Tecnologias (APIs)
" Profiles " Java Servlet 3.0 " JSF 2.0 " CDI " EJB 3.1 " JPA 2.0
" Comparativo de Versões " Perguntas e Respostas
Slide 102 Globalcode
Java Persistence API (JPA)
• Características 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
Slide 103 Globalcode
Java Persistence API (JPA)
Slide 104 Globalcode
Java Persistence API (JPA) 2.0
• Novos Recursos Standard Properties
Melhorias no Mapeamento OR @ElementCollection, @CollectionTable, @OrderColumn
Orphan Removal
Melhorias na JPA-QL CASE, NULLIF, COALESCE
Criteria API
Melhorias na API
Validação (Bean Validation)
Second-level Caching
Pessimistic Locking
Slide 105 Globalcode
Java Persistence API (JPA) 2.0
• Standard Properties
Slide 106 Globalcode
Java Persistence API (JPA) 2.0
• @ElementCollection (Basic Types)
Slide 107 Globalcode
Java Persistence API (JPA) 2.0
• @ElementCollection (Embeddable Types)
Slide 108 Globalcode
Java Persistence API (JPA) 2.0
• Maps
Slide 109 Globalcode
Java Persistence API (JPA) 2.0
• Embeddables com Relacionamentos
Slide 110 Globalcode
Java Persistence API (JPA) 2.0
• @OrderColumn
Slide 111 Globalcode
Java Persistence API (JPA) 2.0
• Orphan Removal
Slide 112 Globalcode
Java Persistence API (JPA) 2.0
• Melhorias na JPA-QL INDEX
Utilizado para listas ordenadas
KEY, VALUE, ENTRY Utilizado para manipulação de Maps
CASE, COALESCE, NULLIF Utilizado para CASE expressions
TYPE Utilizado para restringir polimorfismo
Slide 113 Globalcode
Java Persistence API (JPA) 2.0
• Melhorias na JPA-QL
Slide 114 Globalcode
Java Persistence API (JPA) 2.0
• Criteria API Biblioteca (API) para criação de queries dinâmicas via
programação (métodos)
Principais Classes CriteriaBuilder
– Criação de queries, seleções, ordenação
CriteriaQuery
– Adiciona, substitui, navega nos elementos que compões a query
Root
– Define as query roots
Join, ListJoin, MapJoin…
– Joins partindo de um root ou de joins já existentes
Path
– Navegação patindo de um root, join ou outro path
Subquery
Slide 115 Globalcode
Java Persistence API (JPA) 2.0
• Criteria API
Slide 116 Globalcode
Java Persistence API (JPA) 2.0
• Melhorias na API
Slide 117 Globalcode
Java Persistence API (JPA) 2.0
• Validação (Bean Validation) Definição de um novo modelo de validação para as entidades
utilizando um conjunto de anotações definidas pela JSR 303 (Bean Validation)
Inspirado no projeto Hibernate Validator Validação automática durante os eventos de ciclo de vida
PrePersist
PreUpdate
PreRemove
Slide 118 Globalcode
Java Persistence API (JPA) 2.0
• Validação (Bean Validation)
Slide 119 Globalcode
Java Persistence API (JPA) 2.0
• Second-level Caching Compartilha a instância da entidade entre vários persistence
contexts (EntityManager) utilizados pela aplicação
Slide 120 Globalcode
Java Persistence API (JPA) 2.0
• Second-level Caching JPA 1.0 não definiu nenhum suporte à second-level cache
JPA 2.0 especificou um suporte básico para as estas operações de cache, através da Cache API
Slide 121 Globalcode
Java Persistence API (JPA) 2.0
• Pessimistic Locking JPA 1.0 somente oferece suporte à Lock Optimistic
Encapsula os locks realizados no banco de dados
Lock Modes PESSIMISTIC_READ (lock compartilhado)
PESSIMISTIC_WRITE (lock exclusivo)
PESSIMISTIC_FORCE_INCREMENT (lock versionado)
Slide 122 Globalcode
Agenda
" Plataforma Java EE " Principais Tecnologias (APIs)
" Profiles " Java Servlet 3.0 " JSF 2.0 " CDI " EJB 3.1 " JPA 2.0
" Comparativo de Versões " Perguntas e Respostas
Slide 123 Globalcode
Comparativo de Versões
Slide 124 Globalcode
Comparativo de Versões • Java EE 1.4
Novembro de 2003
EJB 2.1, Servlet 2.4 e JSP 2.0
Principais problemas
Deployment descriptor
Interfaces
Entity beans
Complexidade de aprendizado e desenvolvimento
• Java EE 5 Maio de 2006 Aumentar a produtividade e facilitar o desenvolvimento Principais mudanças
Anotações Enterprise JavaBeans 3.0 Java Persistence API (JPA)
Injeção de dependência
Inclusão de JSF 1.2
Novas versões das APIs existentes
Slide 125 Globalcode
Comparativo de Versões
• Java EE 6 Dezembro 2009;
Maior flexibilidade para a plataforma;
Principais mudanças Java Servlet 3.0;
EJB 3.1;
JPA 2.0;
JSF 2.0;
CDI;
Bean Validation 1.0;
Profiles (deployment);
Novas versões das APIs existentes.
Slide 126 Globalcode
? Perguntas & Respostas
Slide 127 Globalcode
Mini-curso Gratuito
Agradecemos a presença!
http://open4education.googlecode.com/