• Nenhum resultado encontrado

JPA e Padrões de Projeto

N/A
N/A
Protected

Academic year: 2022

Share "JPA e Padrões de Projeto"

Copied!
27
0
0

Texto

(1)

Java Enterprise Edition - JEE

02. JPA e Padrões de Projeto

Esp. Márcio Palheta

gtalk: marcio.palheta@gmail.com

(2)

JPA e Padrões de Projeto

O objeto que define acesso ao BD é do tipo EntityManager - EM;

A interface EntityManagerFactory define o

A interface EntityManagerFactory define o

método para criação do EM, conforme e

código a seguir:

(3)

A EntityManagerFactory – EMF

O processo de criação de uma EMF envolve atividades como:

O JPA Provider lê todas as anotações

O JPA Provider lê todas as anotações realizadas em classes Entidade;

Criação de conexão para acesso ao BD

Atualizações incrementais do esquema de Banco de dados;

Isso nos leva à conclusão: EMF é um

(4)

“Só pode haver um” (Highlander, 1986)

Vamos criar uma nova EMF, sempre que precisamos de uma conexão?

NÃO. Nossa aplicação precisa de

NÃO. Nossa aplicação precisa de apenas uma EMF;

Para isso, criaremos uma classe

utilitária, onde será definida a EMF do

nosso sistema;

(5)

Exercício 01 - JPAUtil.java

(6)

JPAUtil e Padrões de Projeto

Singleton: Garante a existência de apenas uma instância da classe;

Implementado no método estático para Implementado no método estático para criação de EntityManagerFactory;

Factory: Define uma interface para criação de famílias de objetos

relacionados. Aplicado na criação de

conexões - EntityManager

(7)

Pensando em conexões

Precisamos cuidar do ciclo de vida dos nossos objetos EntityManager – EM

EM consume recursos caros, como:

conexão com banco de dados e cache;

conexão com banco de dados e cache;

Após o uso, feche as conexões;

Verifique o status das transações;

No dia-a-dia, usamos frameworks para

injetar EM – Curso de JSF2 e CDI;

(8)

Encapsulamento da JPA

JPA atua diretamente na camada de dados – persistência;

Vamos espalhar o código de acesso por

Vamos espalhar o código de acesso por toda a nossa aplicação?

NÃO.

Vamos encapsular as regras da camada

de modelo em classe utilitárias.

(9)

Data Access Object - DAO

Padrão de projeto que define classes utilitárias para acesso às tabelas do BD

Classes do tipo DAO emcapsulam o

Classes do tipo DAO emcapsulam o acesso à base de dados da aplicação;

Relacionamento:

Tabela: Produto;

Classe DAO: ProdutoDAO;

(10)

Início da classe ContaDAO

(11)

Exercício 02

Implemente a classe ContaDAO;

Implemente a classe ContaDAOTeste;

Na classe de testes, crie objetos Conta

Na classe de testes, crie objetos Conta e invoque a persistencia da classe

ContaDAO;

(12)

Itens a ponderar

O EntityManager aberto em salvar(), só pode ser fechado no próprio método.

Se não fecharmos, o EM fica aberto

Se não fecharmos, o EM fica aberto para sempre;

O DAO não deveria se preocupar com

abertura e fechamento de EM, nem

tratamento de transações;

(13)

Criando dependência

(14)

Melhorando a persistência

(15)

Itens a ponderar

Com o tempo, as aplicações tendem a crescer e novas entidades são incluídas;

Para cadastra um entidade, precisamos

Para cadastra um entidade, precisamos invocar entityManager.persist();

O código será repetido em vários DAOs?

Poderíamos criar um DAO genérico que

sirva para qualquer entidade;

(16)

Exercício 03 – GenericDAO

(17)

Atualização do modelo

A classe ContaDAO não precisa mais implementar os métodos comuns;

Qualquer classe DAO pode usar os

Qualquer classe DAO pode usar os métodos criados no DAO Genérico;

Para isso, precisamos de um atributo do

tipo GenericDAO;

(18)

Exercício 04 – ContaDAO

(19)

Herança no DAO genérico

Poderíamos usar a herança para

acessar o métodos do DAO genérico;

Nessa abordagem, métodos não

Nessa abordagem, métodos não necessários a uma classe, seriam herdados;

E se não fosse possível excluir uma

conta criada?

(20)

Exercício 05 – Adicionar conta

(21)

Exercício 06 – Pesquisar conta

(22)

Exercício 07 – Listar contas

(23)

Exercício 08 – excluir conta

(24)

Exercício 09 – Alterar conta

(25)

O que vem a seguir

Novos relacionamentos;

Trabalhando com ENUMs;

Verificando a cardinalidade;

Verificando a cardinalidade;

TransientObjectException;

Atualização do modelo: Movimentação

(26)

Referências

www.caelum.com.br

http://hibernate.org/docs

Hall, Marty, “Core Servlets and Java Server

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

(27)

Java Enterprise Edition - JEE

02. JPA e Padrões de Projeto

Esp. Márcio Palheta

gtalk: marcio.palheta@gmail.com

Referências

Documentos relacionados

Embora esteja cada vez mais bem documentada a magnitude da dispersão no meio ambiente de poluentes tóxicos produzidos pelo homem, poucas pessoas sabem que esses mesmos compostos

z tenho conhecimento da existência e disponibilidade do plano Amil Referência, quarto coletivo, com abrangência Nacional, e que ele a mim foi oferecido, sendo minha a opção

Já agora não se me dá de confessar que sentia umas tais ou quais cócegas de curiosidade, por saber onde ficava a origem dos séculos, se era tão misteriosa como a origem do Nilo, e

The aim of this study is to present the frequency of musculosk- eletal tissue distributions by Banco de Tecidos Salvador Arena since the beginning of its activities, as well as,

Resumo: Considerando a influência que as novas mídias da comunicação e da informação exercem sobre nossas vidas, o trabalho proposto visa apresentar a análise da

Segundo o mesmo autor, a animação sociocultural, na faixa etária dos adultos, apresenta linhas de intervenção que não se esgotam no tempo livre, devendo-se estender,

Deixamos como sugestão para estudos futuros um olhar mais aprofundado, não só sobre a influência das características articulatórias das letras, mas uma análise ainda mais

5.5 O extrato de CV previne o whitening do TAM e induz genes termogênicos no TAB subcutâneo de camundongos obesos Em concordância com a redução do peso corporal, os animais induzidos