Documente Academic
Documente Profesional
Documente Cultură
0
Novidades
Objetivo
Programao
Objetivos da tecnologia EJB 3.0 Viso geral da API simplificada EJB Viso mais detalhada Java Metadata Interface Software Novidades com os Session beans Acesso ao ambiente Entity beans Sumrio e status atual Mais informaes
One Day Java 4 3
Manter o foco nos cenrios mais comuns Assegurar a compatibilidade com as verses 2.x
Modelo atual
O modelo to ruim que precisa de patterns? Ou O modelo to bom que permite o uso de patterns?
Programao
Objetivos da tecnologia EJB 3.0 Viso geral da API simplificada EJB Viso mais detalhada Java Metadata Interface Software Novidades com os Session beans Acesso ao ambiente Entity beans Sumrio e status atual Mais informaes
One Day Java 4 12
Simples ou complexas (estruturadas) Pode usar defaults (Configuration by exception) Podem executar processos
Gerar novos arquivos / classes No pode alterar cdigo fonte ou bytecode
One Day Java 4 13
Fonte: http://www.theserverside.com
One Day Java 4 15
16
//Component interface public interface Calculadora extends EJBObject { int adicionar(int a, int b) throws RemoteException; int subtrair(int a, int b) throws RemoteException; }
//Home Interface public interface CalculadoraHome extends EJBHome{ public Calculadora create() throws CreateException, RemoteException; }
17
19
Deployment Descriptor
Ruim para se trabalhar Contm informaes redundantes Estrutura no entra em conformidade com as classes dos beans One Day Java 4 20
21
22
23
O bean pode implement-la ou ela pode ser gerada O bean pode ter mais de uma business interface Pode ou no ter acesso remoto RemoteException foi removida do ponto de vista do programador Eliminou tambm o EJB(Local)Object do ponto de vista do programador
25
26
31
@Inject
@Stateless public class MySessionBean { public DataSource customerDB; @Inject public void setCustomerDB(DataSource db){ customerDB = db; } public void myMethod(String str){ try{ Connection cn = customerDB.getConnection(); } catch(Exception e) { ... } } }
One Day Java 4 33
Injection
O Container inicia as dependncias antes que se chame os business methods No precisa mapear os recursos no deployment descriptor Pode ser usado para se obter instncias de EJBContext, EntityManager, resources (DataSource, URL, JMS Topics / Queues, Mail session), outros beans, etc
34
Lookup Dinmico
Mtodo lookup() adicionado ao EJBContext Pode-se usar @Inject para obter o EJBContext
... @Inject public void setSessionContext (SessionContext ctx){ this.ctx = ctx; } ... meuBean = (MeuBean) ctx.lookup(meuBean);
35
Client View
Elimina-se os Homes
Com metadata, injection e lookup() simplificado, Homes no so necessrias para session beans (tanto stateless quanto stateful) Stateless Session bean Homes j no eram muito teis mesmo
Permitir uso fora do Container Facilitar o processo de testes e depurao Eliminar a necessidade de data transfer objects (DTOs) / value objects (VOs) BMP est atualmente fora dos objetivos principais Mudanas importantes
One Day Java 4 37
Processo de anlise
Analisar as opes e tecnologias Decidir as prioridades Identificar itens que necessitam mudanas urgentemente
Complexidade
4 classes, DTD, implementao de javax.ejb.EntityBean
Processo de anlise
Itens que precisavam ser preservados
EJB-QL + melhorias
Adicionar aquilo que o EJB-QL no tinha e que obrigava os desenvolvedores a utilizar BMP e SQL: batch updates/deletes, joins, subqueries, etc.
39
40
Competitividade com outros modelos de persistncia Uma gama de possibilidades maior com o EJBQL
One Day Java 4 41
42
43
Operaes
new() create() remove() Instncias desvinculadas
existem foram do contexto transacional inicial pode ser compartilhada com outras camadas merge() atualiza os dados
One Day Java 4 44
EntityManager
45
update insert
delete
Cliente
46
Entity
Entity 1 Entity 2 Entity 3
Manager
insert update delete
Cliente
47
create()
A insero ocorre
remove()
a instncia removida
Instncias detached
Existem fora do contexto transacional em que foram adicionadas ou recuperadas Pode ser transferida para outras camadas merge() consolida as alteraes
One Day Java 4 48
Client View
@Stateless public class CriaPedidosBean{ private EntityManager em; @Inject void setEntityManager(EntityManager em){ this.em = em; } public void adicionarPedido(int cod, Pedido novoPedido){ Cliente c= em.find(Cliente, cod); c.getPedidos().add(novoPedido); novoPedido.setCliente(c); } // outros business methods }
One Day Java 4 51
Mapeamento O/R
O desenvolvedor fica ciente do mapeamento entre o schema do banco de dados e o do bean
Nas queries e nos beans
Pontos de controle
Nas queries Metadata
One Day Java 4 52
Estratgias de Desenvolvimento
Construo e manipulao de um contexto de persistncia
Um conjunto de instncias persistentes que sero manipuladas naquele contexto
Utilizao de queries para recuperar apenas as partes dos registros que interessam
Finder/select queries Projection (projeo) Outer join e prefetch para substituir o CMR
54
Herana / Polimorfismo
Pr: aumenta o potencial de modelagem Contra: aumenta a complexidade; trabalhar com composio de objetos fica mais prximo da estrutura de dados relacionais.
One Day Java 4 56
57
58
61
62
64
Exemplo: Subqueries
//Alunos acima da mdia: SELECT a FROM Aluno a WHERE a.nota > ( SELECT avg(a.nota) FROM Aluno a2) //Funcionrios cujo cnjuge trabalham na mesma empresa SELECT DISTINCT f FROM Funcionario f WHERE EXISTS ( SELECT conj FROM Funcionario conj WHERE conj.nome = f.conjuge)
One Day Java 4 65
Exemplo: Projection
SELECT g.cor, sum(g.peso), count(g) FROM Gato g GROUP BY g.cor HAVING g.cod IN (preto, pardo) SELECT new Animal(r.cor, sum(r.peso), count(r) FROM Rato r GROUP BY r.cor HAVING r.cor IN (branco, malhado)
66
67
68
Os pontos onde ele interfere so especificados atravs de metadata annotations A funo rgida do Container desaparece
O Contrato invertido
O Bean no implementa um conjunto de APIs Agora, o Bean que diz o que ele precisa
Mais informaes
Site do java: http://java.sun.com JSR 220 EJB 3.0: http://jcp.org/en/jsr/detail?id=220 JSR 175 Metadata: http://jcp.org/en/jsr/detail?id=175 JUG Petrpolis: http://www.petropolisjug.org Feedback: ejb3-feedback@sun.com
One Day Java 4 71
Perguntas Respostas
&