Vous êtes sur la page 1sur 27

Java Enterprise Edition - JEE

02. JPA e Padres de Projeto

Esp. Mrcio Palheta


gtalk: marcio.palheta@gmail.com
1

JPA e Padres de Projeto




O objeto que define acesso ao BD do tipo


EntityManager - EM;
A interface EntityManagerFactory define o
mtodo para criao do EM, conforme e
cdigo a seguir:

A EntityManagerFactory EMF


O processo de criao de uma EMF


envolve atividades como:





O JPA Provider l todas as anotaes


realizadas em classes Entidade;
Criao de conexo para acesso ao BD
Atualizaes incrementais do esquema de
Banco de dados;

Isso nos leva concluso: EMF um


objeto caro;

S pode haver um(Highlander, 1986)




Vamos criar uma nova EMF, sempre


que precisamos de uma conexo?
NO. Nossa aplicao precisa de
apenas uma EMF;
Para isso, criaremos uma classe
utilitria, onde ser definida a EMF do
nosso sistema;
4

Exerccio 01 - JPAUtil.java

JPAUtil e Padres de Projeto




Singleton: Garante a existncia de


apenas uma instncia da classe;
Implementado no mtodo esttico para
criao de EntityManagerFactory;
Factory: Define uma interface para
criao de famlias de objetos
relacionados. Aplicado na criao de
conexes - EntityManager
6

Pensando em conexes






Precisamos cuidar do ciclo de vida dos


nossos objetos EntityManager EM
EM consume recursos caros, como:
conexo com banco de dados e cache;
Aps o uso, feche as conexes;
Verifique o status das transaes;
No dia-a-dia, usamos frameworks para
injetar EM Curso de JSF2 e CDI;
7

Encapsulamento da JPA





JPA atua diretamente na camada de


dados persistncia;
Vamos espalhar o cdigo de acesso por
toda a nossa aplicao?
NO.
Vamos encapsular as regras da camada
de modelo em classe utilitrias.
8

Data Access Object - DAO




Padro de projeto que define classes


utilitrias para acesso s tabelas do BD
Classes do tipo DAO emcapsulam o
acesso base de dados da aplicao;
Relacionamento:



Tabela: Produto;
Classe DAO: ProdutoDAO;
9

Incio da classe ContaDAO

10

Exerccio 02




Implemente a classe ContaDAO;


Implemente a classe ContaDAOTeste;
Na classe de testes, crie objetos Conta
e invoque a persistencia da classe
ContaDAO;

11

Itens a ponderar


O EntityManager aberto em salvar(), s


pode ser fechado no prprio mtodo.
Se no fecharmos, o EM fica aberto
para sempre;
O DAO no deveria se preocupar com
abertura e fechamento de EM, nem
tratamento de transaes;
12

Criando dependncia

13

Melhorando a persistncia

14

Itens a ponderar





Com o tempo, as aplicaes tendem a


crescer e novas entidades so includas;
Para cadastra um entidade, precisamos
invocar entityManager.persist();
O cdigo ser repetido em vrios DAOs?
Poderamos criar um DAO genrico que
sirva para qualquer entidade;
15

Exerccio 03 GenericDAO

16

Atualizao do modelo


A classe ContaDAO no precisa mais


implementar os mtodos comuns;
Qualquer classe DAO pode usar os
mtodos criados no DAO Genrico;
Para isso, precisamos de um atributo do
tipo GenericDAO;

17

Exerccio 04 ContaDAO

18

Herana no DAO genrico




Poderamos usar a herana para


acessar o mtodos do DAO genrico;
Nessa abordagem, mtodos no
necessrios a uma classe, seriam
herdados;
E se no fosse possvel excluir uma
conta criada?
19

Exerccio 05 Adicionar conta

20

Exerccio 06 Pesquisar conta

21

Exerccio 07 Listar contas

22

Exerccio 08 excluir conta

23

Exerccio 09 Alterar conta

24

O que vem a seguir








Novos relacionamentos;
Trabalhando com ENUMs;
Verificando a cardinalidade;
TransientObjectException;
Atualizao do modelo: Movimentao

25

Referncias




www.caelum.com.br
http://hibernate.org/docs
Hall, Marty, Core Servlets and Java Server
Pages, Janeiro 2002, Sun Microsystems
Press;
http://java.sun.com/j2ee/1.6/docs/tutorial/d
oc/index.html
http://java.sun.com/blueprints/corej2eepatte
rns/Patterns/index.html
26

Java Enterprise Edition - JEE


02. JPA e Padres de Projeto

Esp. Mrcio Palheta


gtalk: marcio.palheta@gmail.com
27

Vous aimerez peut-être aussi