Componentes no Java EE

Propaganda
Java EE
Unidade IV
Plataforma Java Enterprise Edition
Componentes no Java EE
Java EE
JSP
Servlets
JSF
EJB
JPA
Connectors
Mecanismos
de Comunicação Remota:
JMS e JavaMail
Java EE
Java Server Pages (JSP)
Permite a criação de páginas Web com
conteúdo dinâmico, gerado por código Java
ou por JavaBeans
Usa APIs voltadas para a criação de HTML e
XML
Java Server Faces (JSF)
Framework para criação de aplicações Web
utilizando componentes
Facilita o desenvolvimento de aplicações Web
fornecendo componentes e utilizando eventos
Servlets
Suporte a Web Services
JAX-WS (Java API for XML Web Services):
JAXprovê suporte para criação de serviços web e
seus clientes
JAXP (Java API for XML Processing): realiza o
processamento de dados em XML
Aplicações que rodam em servidores Web
São persistentes, ao contrário de scripts CGI
Recebem requisições pela rede via HTTP ou
HTTPS
3
4
Java EE
2
Java EE
Adiciona ao Java suporte para:
Desenvolvimento de aplicações Web:
JSP, Servlets e JSF
Desenvolvimento de Web Services:
JAX--WS, JAXP, JAXB, JAXJAX
JAX-RPC, SAAJ, JAXR
Componentes de Negócio: EJB
Suporte a Transações: JTA
Interconexão com Sistemas Legados:
Java EE
Suporte a Web Services (cont.)
JAXB (Java API for XML Binding): faz o mapemapeamento entre dados em XML e objetos Java
JAX
JAX--RPC (Java API for XML RPC): permite o
envio de chamadas remotas de procedimento
a serviços web
SAAJ (SOAP with Attachments API for Java):
permite o envio de mensagens SOAP,
inclusive com anexos
JAXR (Java API for XML Registries): permite o
acesso a registros de serviços em repositórios
UDDI e ebXML
Enterprise JavaBeans (EJB)
Componentes que rodam no servidor
Acessam os sistemas legados da empresa
para implementar regras de negócio
Java Transaction API (JTA)
5
API de suporte a transações
Transações são modeladas como objetos Java
6
1
Java EE
Java Messaging Service (JMS)
Arquitetura multimulti-camadas do Java EE
Serviço para comunicação através de
mensagens assíncronas (eventos)
JavaMail
Java EE
API para envio e recepção de ee-mails
Java Connectors
Permite integrar os sistemas legados usados
nas empresas à arquitetura Java EE
© http://java.sun.com
7
8
Java EE
Java EE
Camadas do Java EE
Camada Cliente
Clientes Web: navegador, aplicações web, …
Aplicações Java
Camada Web
Páginas JSP, JSF, Servlets e JavaBeans
Camada de Negócios
Componentes EJB
Camada de Sist. de Informações
Informações Empresaria
Empresariais
is
Integração com BDs e outros sist. legados
Servidor Java EE
Possui duas camadas:
Camada Web
Composta por páginas JSP, JSF, Servlets
e JavaBeans
Acessada pelos clientes Web
Camada de Negócios
Composta por componentes EJB
Usada pela camada Web e por
aplicações clientes escritas em Java
9
10
Java EE
Java EE
Servidor Java EE
Fornece ambientes controlados de execução –
os contêiners – para componentes Java EE
Contêiner Web: para Servlets e Páginas
JSP/JSF
Contêiner EJB: para Enterprise Beans
Provê acesso transparente a serviços:
Transação: JTA
Segurança: JAAS
Localização: JNDI
etc.
Servidor Java EE: Contêiners Web e EJB
© http://java.sun.com
11
12
2
Java EE
Java EE
Camada de Sistemas de Informações
Informações
Empresariais
Empresaria
is (EIS)
Usada pelos componentes EJB da camada de
negócio p/ acesso a software de infraestrutura
Banco de Dados
Monitores de Transaç
Transações
ões
Enterprise Resource Planning (ERP)
Customer Relationship Management (CRM)
... e outros sistemas legados
Estes sistemas geralmente rodam em
mainframes ou servidores de médio porte
Conectores permitem o acesso a sist. legados
Conectores
Integram diversos sistemas à plataforma
Java EE
Fornecido pelo fabricante do sistema legado
ou por terceiros
Para desenvolver um conector geralmente é
necessário escrever código nativo para a
plataforma do sistema legado e integrar ao
Java usando JNI (Java Native Interface),
CORBA ou Sockets
14
13
Java EE
Java EE
Distribuição de aplicações corporativas
Arquivos que compõem uma aplicação Web
são empacotados num arquivo WAR
Arquivos necessários para implantar EJBs
devem ser empacotados em arquivos JAR
Uma aplicação corporativa completa é
empacotada em um arquivo EAR
Contém uma ou mais aplicações Web em
arquivos WAR
Contém um ou mais arquivos JAR com os
componentes EJB da aplicação
Implantação de aplicações corporativas
Arquivos EAR são carregados no servidor Java
EE, que abre o pacote e coloca a aplicação em
execução
Conteúdo de arquivos é WAR implantado no
contêiner Web
Componentes EJB contidos nos arquivos
JAR são implantados no contêiner EJB
A implantação é efetuada com base em
informações obtidas de descritores em XML e
de anotações feitas nas próprias classes Java
15
16
Java EE
Java EE
Interoperabilidade
Java EE é compatível com o CORBA, padrão da
OMG para comunicação remota entre objetos
Interfaces são compatíveis com CORBA IDL
Comunicação via RMI sobre CORBA IIOP
Transações são controladas pelo JTS, que é
uma implementação do serviço de
transações do CORBA
Interoperação com .NET é feita utilizando Web
Services
Modelos para construção de aplicações Web
Modelo 1: Centrado em páginas JSP
Modelo de dados composto por JavaBeans
Indicado para aplicações simples
Modelo 2: ModeloModelo-VisãoVisão-Controlador (MVC)
Usa JavaBeans ou EJB para o modelo de
dados, JSP para visão e servlet controlador
EJB é usado em aplicações de larga escala
Frameworks MVC: simplificam uso do Modelo 2
Struts, Spring, ... e JSF!
18
17
3
JSP
JSP
Java Server Pages
Linguagem para geração de conteúdo Web
Código Java é inserido em páginas HTML,
WML ou XML para gerar conteúdo dinâmico
Páginas pode ser geradas com base em
parâmetros passados na URL, dados mantidos
em um BD, na identificação do usuário, etc.
Cliente Web não tem acesso ao código JSP
Requer um servidor Web compatível com Java
EE para executar o código JSP
Exemplo de JSP
<%@page import=“java.util.Date” %>
<%@page contentType=“text/html; charset=UTFcharset=UTF-8” %>
<html> <head><title>Acesso</title></head> <body>
<% String nome = request.getParameter(“nome”);
if (nome != null) { %>
<p>Usuário: <%=nome
<%=nome%>
%>
<% } else { %>
<p>Usuário: anônimo
<% } %>
<p>Acesso em: <%=new
<%=new Date().toString()%>
Date().toString()%>
<p>IP: <%=request.getLocalAddr()
<%=request.getLocalAddr()%>
%>
</body> </html>
20
19
JSP
JSP
Desenvolvimento de Páginas JSP
Divisão de responsabilidades
Designers devem se preocupar com o
layout das páginas Web
Programadores fazem o desenvolvimento
do código em JSP
É possível separar claramente design de
programação encapsulando o código Java em
componentes JavaBeans
O designer deve apenas chamar o bean a
partir da página JSP
Compilação
A compilação de uma página JSP gera um
servlet que irá tratar as requisições enviadas a
esta página Web
Execução
O servlet é instanciado no servidor e atende
as requisições enviadas à URL correspondente
21
22
JSP
JSP
Declaração de Importação
Declarações de Atributos e Métodos
Exemplo:
<%@ page import=“java.util.*, pacote.*” %>
<%! ...declarações Java... %>
Declaração de Inclusão
Inclusão na tradução da página:
<%@ include file=“arquivo.jsp” %>
Inclusão na execução da página:
<jsp:include page=“arquivo.jsp” />
<%! private MinhaClasse meuAtributo;
public String mensagem;
public void meuMétodo() { ... }
public String getMensagem() {
return mensagem;
}
%>
23
24
4
JSP
JSP
Declaração de Scriptlets
<jsp:useBean id=“meuBean”
class=“pacote.nomeBean” scope=“session”/>
<% ...código Java... %>
Declaração de Expressões
<%= ...expressão Java... %>
Usando JavaBeans em Páginas JSP
Modificando Propriedades
<jsp:setProperty name=“meuBean”
property=“propriedade” value=“Valor” />
<% meuBean.setPropriedade(valor); %>
Exemplo
<% for (int i = 0; i<alunos.length(); i++) { %>
<p>Aluno: <%=aluno[i].getNome()%>
<p>Nota: <%=aluno[i].getNota()%>
<% } %>
Recuperando Propriedades
<jsp:getProperty name=“meuBean”
property=“propriedade” />
<%= meuBean.getPropriedade() %>
25
JSP
Servlets
Objetos Implícitos
ServletContext application
ServletConfig config
JspWriter out
Object page
Contexto da aplicação
Informações de inicialização
Fluxo de saída
Instância do servlet que
processa a página JSP
PageContext pageContext Contexto da página JSP
ServletRequest request
Requisição da página JSP
ServletResponse response Resposta à requisição atual
HttpSession session
Sessão atual
Throwable exception
Informação de erro
Servlets são classes Java que implemenimplementam a interface javax
javax..servlet.
servlet.Servlet
A interface Servlet possui métodos para:
Inicialização do Servlet:
Servlet: método init()
init()
Destruição do Servlet:
Servlet: método destroy()
destroy()
Obtenção de configuração: getServletConfig()
getServletConfig()
Informações sobre o Servlet
Servlet:: getServletInfo()
getServletInfo()
Responder solicitações dos clientes: service()
service()
27
28
Servlets
26
Servlets
Implementações padrão da interface
javax.servlet.Servlet
Servlets HTTP
Agem como plugplug-ins para o servidor Web
Um servidor Java EE, além de permitir o
acesso a conteúdo estático, permite que o
cliente acesse servlets através de uma URL
Não é necessário nenhum suporte especial no
navegador do cliente para exibir a página
Ao receber uma mensagem HTTP, o servlet
executa o método correspondente, gerando
dinamicamente uma página Web que será
enviada ao cliente
GenericServlet
Independente de protocolo
Desenvolvedor precisa tratar as requisições
HttpServlet
Recebe requisições através do protocolo
HTTP (HyperText Transfer Protocol)
É acessado através de uma URL
29
30
5
Servlets
Servlets
Servlet HTTP
Recebe mensagens padrão do protocolo HTTP
GET: acessa conteúdo disponível no servidor
POST: envia dados para o servidor processar
PUT: coloca conteúdo no servidor
DELETE: remove conteúdo do servidor
HEAD: obtém cabeçalho
OPTIONS: lista formas de acesso ao servidor
TRACE: traça o caminho até o servidor
Implementa métodos do<mensagem>() para
tratar as mensagens do HTTP
Exemplo de Servlet HTTP – método doGet()
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<html><head><title>Servlet</title>
</head><body>");
out.println("<h2>Acessando o Servlet</h2>");
out.println("<p>Host: " + request.getRemoteAddr());
out.println("<p>Browser: " +
request.getHeader( "User"User-Agent"));
out.println("</body></html>");
out.close();
}
31
JSF
JSF
Java Server Faces é um framework para
construção de aplicações Web em Java
Componentes JSF
O JSF fornece um conjunto de componentes
comumente usados em páginas Web: link,
tabela, botão, combo box,
box, caixa de texto, etc.
Há várias bibliotecas de componentes –
comerciais ou gratuitas – disponíveis para uso
(MyFaces,
MyFaces, RichFaces,
RichFaces, WoodStock,
WoodStock, etc.)
Componentes são representados como tags
em uma página JSP e posteriormente
convertidos para o código HTML equivalente
JSF é baseado em componentes para Web
Adota o padrão ModeloModelo-VisãoVisão-Controlador
Utiliza JavaBeans gerenciados (com injeção de
dependência) e é integrado a JSP e Servlets
Incorpora o conceito de eventos na navegação
pela Web, com tratamento no servidor
Provê ainda APIs para controle de navegação
na Web, validação de entrada, conversão de
valores e suporte a localização e acessibilidade
33
34
JSF
32
JSF
Modelo de eventos
Uma ação na página Web – como clicar um
botão ou selecionar uma opção em um combo
box – resulta em um evento
O evento é tratado por um método do bean
que representa a página, que é executado no
servidor
Retorno do tratador de evento determina o
fluxo de navegação da aplicação
O uso de eventos torna o desenvolvimento de
aplicações Web semelhante ao desktop
Facelets
Forma padrão de implementarviews no JSF2.0
Baseado em XHTML
Permite construir uma árvore de componentes
e referenciar beans gerenciados JSF
Beans Gerenciados
35
São beans usados na aplicação JSF
Seu ciclo de vida é gerenciado pelo servidor
Java EE
36
6
JSF
JSF
Escopo dos Beans Gerenciados JSF
Escopo
Application
Ciclo de Vida
A mesma instância é compartilhada por
todos os usuários da aplicação
Session
Uma instância por sessão (cada usuário
possui a sua instância particular)
Conversation Instâncias criadas/destruídas pela
aplicação para diferenciar janelas/abas
Request
Instância criada/destruída a cada
requisição enviada ao servidor
Dependent Instância criada/removida quando o
objeto que a referencia é criado/removido
37
Exemplo: Facelet index
index..xhtml
O facelet possui um
<?
<?xml
xml version='1.0' encoding='UTF
encoding='UTF--8' ?>
formulário com um
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/1999/xhtml"
campo de texto, no
xmlns:h="http://java.sun.com/jsf/html"
xmlns
:h="http://java.sun.com/jsf/html"
qual deve ser
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns
:ui="http://java.sun.com/jsf/facelets"
digitado um número.
xmlns:f="http://java.sun.com/jsf/core">
xmlns
:f="http://java.sun.com/jsf/core">
Ao clicar no botão
<head>
head>
Enviar, o número é
<title>Adivinhe
title>Adivinhe o número</
número</title
title>
>
armazenado no
</
</head
head>
>
atributo userNumber
<body>
body>
de UserNumberBean
<h5>Entre com um número de 0 a 9:</h5>
e o navegador exibe
<h:form
<h:
form>
>
o facelet response.
<h:inputText
<h:
inputText id="userNumber
id="userNumber"" size
size="2"
="2"
maxlength="2"
maxlength
="2" value="#{
value="#{UserNumberBean
UserNumberBean..userNumber
userNumber}"
}" />
<h:commandButton
<h:
commandButton id="submit
id="submit"" value="Enviar"
value="Enviar"
action="
action
="response
response"" />
</h:form
</h:
form>
>
</
</body
body>
>
</
</html
html>
>
38
JSF
JSF
Exemplo: Facelet resposta.html
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
xmlns
:h="http://java.sun.com/jsf/html">
<head>
head>
<title>Resposta</
title>Resposta</title
title>
>
</
</head
head>
>
O facelet de resposta
tem um campo de texto
no qual é mostrado o
valor retornado pelo
método getResponse
do bean gerenciado. O
botão Voltar retorna ao
facelet index.
Exemplo: Bean gerenciado UserNumberBean
@ManagedBean
ManagedBean((name="
name="UserNumberBean
UserNumberBean")
")
@SessionScoped
// sessão -->uma
-->uma instância por usuário
public class UserNumberBean {
Integer randomInt
randomInt;;
// armazena número sorteado
Integer userNumber
userNumber;;
// armazena número digitado pelo usuário
<body>
body>
<h4>
<h:outputText
<h:
outputText escape="
escape="false
false"" value
value=
=
"#{UserNumberBean
"#{
UserNumberBean..response
response}"/>
}"/>
</h4>
<h:form
<h:
form>
>
<h:commandButton
<h:
commandButton id="back
id="back"" value="Voltar"
value="Voltar" action="
action="index
index"" />
</h:form
</h:
form>
>
</
</body
body>
>
</
</html
html>
>
public UserNumberBean()
UserNumberBean() { // construtor; sorteia número aleatório
Random randomGR = new Random
Random();
();
randomInt = new Integer
Integer((randomGR
randomGR..nextInt(10));
nextInt(10));
System.out.println
System.
out.println("Número
("Número sorteado: " + randomInt);
randomInt);
}
public void setUserNumber(
setUserNumber(Integer userNumber
userNumber)) {
this..userNumber = userNumber;
this
userNumber; // armazena o número digitado
}
...
39
40
JSF
EJB
...
public Integer getUserNumber
getUserNumber()
() {
return userNumber
userNumber;;
// retorna o útimo número digitado
}
Integra um modelo de componentes de negócio
à arquitetura Java EE
Cria uma camada composta de beans
especializados, nãonão-gráficos
Beans rodam em servidores Java EE
public String getResponse()
getResponse() {
if ((
((userNumber
userNumber != null)
null) && (userNumber
(userNumber.. compareTo(
compareTo(randomInt
randomInt))
== 0)) {
// se número digitado == gerado
FacesContext context = FacesContext.
FacesContext.getCurrentInstance
getCurrentInstance();
();
HttpSession session = ((HttpSession
HttpSession))context
context..getExternalContext
getExternalContext().
().
getSession((false
getSession
false);
);
// obtém o objeto de sessão
session..invalidate();
session
invalidate();
// destrói a sessão
return "Você acertou!"; // resposta = acertou
} else {
// resposta = errou
return "<p>Desculpe, o número não é " + userNumber + "</p>"
+ "<p>Tente novamente</p>";
}
}
}
Enterprise JavaBeans
Componentes EJB
São objetos Java escaláveis e reutilizáveis
Utilizam anotações/arquivos XML para informar
ao contêiner como devem ser gerenciados
41
42
7
EJB
EJB
Comunicação
Tipos de Enterprise Beans
EJBs interagem com clientes remotos através de
interfaces/Beans
interfaces/
Beans anotados com @
@Remote
Remote
Beans podem ser acessados remotamente por:
Aplicações Java usando RMI/IIOP
Aplicações CORBA usando IIOP
Clientes Web via páginas JSP ou Servlets
Clientes locais podem interagir com os EJBs
utilizando injeção de dependência ou interfaces/
beans anotados com @Local
Session Beans
Executam
uma tarefa durante uma sessão
de interação entre o Bean o cliente
Entity Beans
Representam
Persistência
dados armazenados em BDs
transparente
Message--Driven Beans
Message
São
consumidores de mensagens JMS
tratadas ao serem recebidas
Mensagens
43
44
EJB
EJB
Session Bean
Representam um cliente em particular no
servidor – ou seja, o bean não é
compartilhado entre os clientes
O cliente invoca métodos do bean para
acessar o servidor – o bean age como uma
extensão do cliente
Pode ser acessado remotamente quando
possui a anotação @Remote
@Remote na classe do
bean ou em uma interface que ela implementa
Estado dos Session Beans
Stateless Session Bean
Não
possui estado que o ligue a um cliente
diferentes são equivalentes se
inativas
Instâncias
Stateful Session Bean
Armazena
estado durante a sessão de um
cliente (entre invocações sucessivas)
O estado não é persistido (é transiente)
45
46
EJB
EJB
Exemplo de Stateless Session Bean
clientes remotos
@Stateless
public class HelloWorldSessionBean
HelloWorldSessionBean{{
public String hello
hello(){
(){
return “Hello World”;
}
}
Stateless Session Bean com suporte a
Anotando a interface com @Remote
@Remote
@Remote
public interface Hello{
Hello{
public String hello();
hello();
}
A anotação @Stateless indica que a classe
anotada é um Stateless Session Bean
47
@Stateless
public class HelloWorldSessionBean implements Hello
Hello{{
public String hello(){
hello(){
return “Hello World”;
}
}
48
8
EJB
EJB
Stateless Session Bean com suporte a
clientes remotos
Ciclo de vida dos Stateless Session Beans
Anotando classe com @Remote
@Remote
Instância do Bean
não existe
public interface Hello
Hello{{
public String hello
hello();
();
}
@Stateless
@Remote(
Remote(Hello
Hello..class
class))
public class HelloWorldSessionBean implements Hello
Hello{{
public String hello
hello(){
(){
return “Hello World”;
}
}
Contêiner
decide quando
é necessário criar
mais instâncias
Contêiner
decide quando
não necessita mais
das instâncias
Pool de Beans
49
50
EJB
EJB
Exemplo de Stateful Session Bean
@Stateful
@Remote
Remote((Count.
Count.class
class))
public class CountBean implements Count {
private int count;
count;
public int getCount
getCount()
() { return this.
this.count;
count; }
public void setCount
setCount((int count)
count) { this.
this.count = count;
count; }
@Remove
public void remove() { }
}
Cliente
invoca
método
Ciclo de vida dos Stateful Session Beans
Instância do Bean
não existe
Cliente invoca
método de remoção
ou ocorre timeout
Cliente obtém uma
referência da
interface de negócio
Pronto
A anotação @Stateful indica que a classe é um
Stateful Session Bean
A anotação @Remove indica que o bean deve ser
removido após a execução do método anotado
Contêiner
desativa bean
Cliente
invoca
método
Cliente invoca
método
Passivo
51
52
EJB
EJB
Message--Driven Beans
Message
Consomem mensagens de uma fila ou
associadas a um determinado tópico
Podem receber mensagens de uma ou de
múltiplas fontes
Não possuem estado nem interfaces remotas
Beans são anotados com @
@MessageDriven
MessageDriven
Sua interface depende do serviço de
mensagens utilizado
Geralmente é usado JMS (Java Message
Service)
Exemplo de Message
Message--Driven Bean
@MessageDriven
MessageDriven((mappedName
mappedName="
="jms
jms//Queue
Queue")
")
public class SimpleMessageBean implements MessageListener {
public void onMessage (Message msg
msg)) {
// utiliza a mensagem
}
}
53
O bean utiliza o JMS, que requer a implemenimplementação da interface javax
javax..jms.
jms.MessageListener
A fila de mensagens especificada na anotação
@MessageDriven é mantida num provedor JMS
54
9
EJB
EJB
Ciclo de vida dos Message
Message--Driven Beans
Entity Beans
São POJOS (Plain Old Java Objects)
Permitem o acesso compartilhado a dados
armazenados em um BD
Dados são materializados na forma de
objetos (mapeamento objetoobjeto-relacional)
Bean = tabela de um BD relacional
Instância do Bean = linha da tabela
Identificador do Bean = chave primária
Utilizam a JPA (Java Persistence API) para
controlar a persistência dos dados
Instância do Bean
não existe
Contêiner
decide quando
criar instâncias
Contêiner
decide quando
destruir instâncias
Pronto
onMessage()
onMessage
()
55
56
JPA
JPA
Java Persistence API
Modelo simplificado e leve de persistência
Pode ser utilizado tanto em contêiners JavaEE
quanto em aplicações JavaSE
Permite utilização de herança e polimorfismo
Permite criação de testes independentes do
contêiner quando utilizado com JavaEE
Possui anotações para definição de
mapeamento objetoobjeto-relacional
Principais implementações da JPA
Hibernate
Oracle
Entidade
No JPA uma entidade é um objeto comum
Java (um POJO) que pode ser gravado pelo
mecanismo de persistência
Uma classe que representa uma entidade é
anotada com @Entity
@Entity
Toda entidade deve possuir um construtor
sem argumentos
Toda entidade deve possuir uma chave
primária, simples ou composta, identificada
pela anotação @Id
Chaves compostas devem ser representadas
por uma classe Java em separado
TopLink
57
58
JPA
JPA
Exemplo de Entidade JPA
Anotações de Relacionamento
@Entity
public class Conta {
@Id
private Long numConta
numConta;;
private String nomeTitular
nomeTitular;;
private long saldo;
public Conta() { } //Construtor sem argumentos é obrigatório
public void setNumConta(
setNumConta(Long numConta
numConta)) {
this.. numConta = numConta
this
numConta;;
}
public Long getNumConta
getNumConta()
() { return this
this..numConta
numConta;; }
//Métodos getters e setters para os outros atributos
}
59
Especificam relacionamento entre entidades e
a cardinalidade da relação
@OneToOne
@OneToMany
@ManyToOne
@ManyToMany
60
10
JPA
JPA
Ciclo de vida das entidades
Estados
new: Estado da entidade após ser criada.
new:
managed:: Entidade persistida, com id
managed
associado a um contexto de persistência.
removed
removed:: marcada para ser removida do BD.
detached
detached:: Entidade possui um id persistente
mas não possui um contexto de persistência.
new
new()
persist()
refresh()
remove()
managed
removed
Fim do contexto de
persistência
persist()
Operações
new():: Cria nova entidade
new()
persist()
persist
():: Persiste uma entidade
refresh
refresh()
():: Atualiza o estado de uma entidade
merge()
merge():: Sincroniza entidade desacoplada
merge()
detached
61
62
JPA
Entity Manager
Controla o ciclo de vida das entidades
Possui métodos para buscar, salvar, remover
e atualizar estado das entidades
Referência para o Entity Manager é obtida
com injeção de dependências, utilizando a
anotação @PersistenceContext
@PersistenceContext
63
11
Download