• 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: [email protected]

(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: [email protected]

Referências

Documentos relacionados

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

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,

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,

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

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