Você está na página 1de 55

Mdulo II

Arquitetura em Camadas e
Persistncia de Objetos
Prof. Ismael H F Santos

April 08

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

Ementa
Arquitetura de camadas de Software
Arquiteturas

em Camadas
Padres para Arquiteturas em camadas
Persistncia de Objetos
Persistncia

de objetos
Estratgias de Persistncia

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

FPSW-Java
Arquitetura
Em Camadas

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

Introduo
Em aplicaes OO de mdio e grande porte, diversos

aspectos devem ser considerados:

Apresentao
Lgica da aplicao
Lgica do negcio
Persistncia de Objetos
Camada de Utilitrios:
Controle de Excees, Logging, comunicao, etc.

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

Arquitetura em camadas
Arquitetura em camadas

visa a criao de
aplicativos modulares, de
forma que a camada mais
alta se comunica com a
camada mais baixa e
assim por diante, fazendo
com que uma camada
seja dependente apenas
da camada imediatamente
abaixo.
April 05

Camada de Apresentao

Camada de Negcios

Classes de
utilidade e
classes
assistentes

Camada de Persistncia

Banco de
dados

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

Arquitetura em camadas
Camada de Apresentao: Lgica de interface do

usurio (GUI). O cdigo responsvel pela apresentao


e controle da pgina e tela de navegao forma a
camada de apresentao;
Camada de Negcios: Cdigo referente a
implementao de regras de negcio ou requisitos do
sistema;
Camada de persistncia: Responsvel por
armazenamento e recuperao dos dados quando
solicitado. Objetivo o de garantir uma independncia
da fonte de dados (arquivos, bancos de dados, etc) e ao
mesmo tempo manter as informaes entre diferentes
sesses de uso.
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

Arquitetura em camadas
Banco de dados: O BD existe fora da

aplicao Java, a atual representao


persistente do estado do sistema.
Assistentes e Classes de utilidade: So

classes necessria para o funcionamento ou


mesmo o complemento de uma aplicao ou
parte dela, como por exemplo o Exception
para tratamento de erros.
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

Arquitetura MVC
Surgiu nos anos 80 com a linguagem SmallTalk
Divide a aplicao em tres

partes fundamentais

Model Representa os dados


da aplicao e as regras de
negcio (business logic)
View Representa a
informao recebida e
enviada ao usurio
Controller Recebe as
informaes da entrada e
controla o fluxo da aplicao

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

FPSW-Java

April 05

Padres para
Arquiteturas
em Camadas

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

Modelo de Camadas Apps Desktop


POJO

GUI

UC 1
Controller
POJO
UC 2
Controller

View
Helper
Apresentao
April 05

Controle
Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

POJO
Negcio
10

Modelo de Camadas Apps Desktop


POJO
GUI

UC
Controller

DAO

JDBC

View
Helper
Apresentao
April 05

Controle

Hibernate

POJO
Negcio

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

Persistncia
+ Dados
11

Modelo de Camadas Apps Web


Command Pattern

Comando
1
JSP

Front
Controller

POJO

DAO

Comando
2
POJO
Comando
3
POJO
View
Helper

Apresenta
April 05
o

Controle

JDBC

Hibernate

DAO
Negcio

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

Persistnci
12
a + Dados

FPSW-Java

April 05

Data Access
Object

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

13

Patterns
No existe uma definio exata para o que so

patterns. O autor Martin Fowler, define patterns como


uma idia que foi til em um contexto prtico e que
provavelmente ser til em outros. Outros autores
definem como uma regra que expressa uma relao
entre um contexto, um problema e uma soluo. Mas
em geral, patterns tem sempre as seguintes
caractersticas:

so notados atravs da experincia;


evitam que se reinvente a roda;
existem em diferentes nveis de abstrao;
so artefatos reutilizveis;
passam aos desenvolvedores designs corretos e
podem ser combinados para resolver um grande problema;
aceitam melhoramentos continuos.

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

14

Pattern Data Access Object (DAO)


Objetivo

April 05

Abstrair e encapsular todo o acesso a uma


fonte de dados. O DAO gerencia a conexo
com a fonte de dados para obter e
armazenar os dados.

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

15

Pattern DAO
O padro Data Access Object , tambm conhecido

como o padro DAO, abstrai a recuperao dos


dados tal com com uma base de dados. O conceito
"separar a relao do cliente de um recurso dos
dados de seu mecanismo de acesso dos dados."
O DAO utilizado para encapsular a lgica de

acesso a dados. Assim, se for necessrio a alterao


de banco de dados, no necessrio alterar todo
sistema, mas somente os DAOs.

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

16

Pattern DAO
Dentro do DAO so realizadas as querys ou o acesso

aos mtodos do Hibernate. A inteno real de


existncia dos DAOs que eles no possuam
nenhuma lgica de negcio, apesar de algumas vezes
ser necessrio encaplusar algo dentro deles,
especialmente quando outros patterns da camada de
modelo no esto presentes.
Quando utilizado junto com Hibernate, ambos realizam

o trabalho de abstrair a base, pois o Hibernate j


mascara o tipo do banco de dados, ficando para o DAO
a parte de controlar as conexes, excesses, retornos
para os nveis superiores, entre outros.
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

17

Problema
Forma de acesso aos dados varia

consideravelmente dependendo da
fonte de dados usado
Banco de dados relacional
Arquivos (XML, CSV, texto,
formatos proprietrios)
LDAP
Persistncia de objetos depende de
integrao com fonte de dados (ex:
business objects)
Colocar cdigo de persistncia
(ex: JDBC) diretamente no cdigo
do objeto que o utiliza ou do
cliente amarra o cdigo
desnecessariamente forma de
implementao
Ex: difcil passar a persistir
objetos em XML, LDAP, etc.
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

18

Soluo
Data Access Object (DAO) oferece

uma interface comum de acesso


a dados e esconde as
caractersticas de uma
implementao especfica
Uma API: mtodos genricos
para ler e gravar informao
Mtodos genricos para
concentrar operaes mais
comuns (simplificar a
interface de acesso)
DAO define uma interface que
pode ser implementada para
cada nova fonte de dados usada,
viabilizando a substituio de
uma implementao por outra
DAOs no mantm estado nem
cache de dados
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

19

UML
Client: objeto que requer acesso a dados: Business

Object, Session Faade, Application Service, Value


List Handler, ...
DAO: esconde detalhes da fonte de dados
DataSource: implementao da fonte de dados
Data: objeto de transferncia usado para retornar
dados ao cliente. Poderia
tambm ser usado para
receber dados.
ResultSet: resultados de
uma
pesquisa no banco
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

20

Estratgias de Implementao
Custom DAO Strategy
Estratgia bsica. Oferece mtodos para criar, apagar,
atualizar e pesquisar dados em um banco.
Pode usar Transfer Object para trocar dados com
clientes
DAO Factory Method Strategy
Utiliza Factory Methods em uma classe para recuperar
todos os DAOs da aplicao
DAO Abstract Factory Strategy
Permite criar diversas implementaes de fbricas
diferentes que criam DAOs para diferentes fontes de
dados
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

21

Exemplo

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

22

DAO - interao

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

23

Interface CustomerDAO
public interface CustomerDAO {
public int insertCustomer(...);
public boolean deleteCustomer(...);
public Customer findCustomer(...);
public boolean updateCustomer(...);
public RowSet selectCustomersRS(...);
public Collection selectCustomersTO(...);
...
}

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

24

CloudscapeCustomerDAO impl
/* This class can contain all Cloudscape specific code and SQL
statements. The client is thus shielded from knowing these
implementation details */
import java.sql.*;
public class CloudscapeCustomerDAO implements CustomerDAO {
public CloudscapeCustomerDAO() { // initialization }
/* The following methods can use CloudscapeDAOFactory.
createConnection() to get a connection as required */
public int insertCustomer(...) {
/* Implement insert customer here. Return newly created customer
number or a -1 on error */
}
public boolean deleteCustomer(...) {
/* Implement delete customer here // Return true on success,
false on failure */
}
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

25

CloudscapeCustomerDAO impl
public Customer findCustomer(...) {
/* Implement find a customer here using supplied argument values as
search criteria. Return a Transfer Object if found, return null on error or
if not found */
}
public boolean updateCustomer(...) {
/* implement update record here using data from the customerData
Transfer Object Return true on success, false on failure or error */
}
public RowSet selectCustomersRS(...) {
/* implement search customers here using the supplied criteria.
Return a RowSet. */
}
public Collection selectCustomersTO(...) {
/* implement search customers here using the supplied criteria.
Alternatively,
implement to return a Collection of Transfer Objects. */
}
Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br
26
} April 05

Client Code
// Create the required DAO Factory and the DAO Object
DAOFactory cloudscapeFactory =
DAOFactory.getDAOFactory(DAOFactory.DAOCLOUDSCAPE);
CustomerDAO custDAO = cloudscapeFactory.getCustomerDAO();
// Create a new customer. Find a customer object. Get Transfer Object.
int newCustNo = custDAO.insertCustomer(...);
Customer cust = custDAO.findCustomer(...);
// modify the values in the Transfer Object. Update the customer object
cust.setAddress(...); cust.setEmail(...); custDAO.updateCustomer(cust);
// delete a customer object
custDAO.deleteCustomer(...);
// select all customers in the same city
Customer criteria=new Customer(); criteria.setCity("New York");
Collection customersList = custDAO.selectCustomersTO(criteria);
// returns collection of CustomerTOs. iterate through this collection to get
values. ...
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

27

CustomerTransferObject
import java.io.*;
public class Customer implements Serializable {
// member variables
int CustomerNumber;
String name;
String streetAddress;
String city;
...
// getter and setter methods...
...
}
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

28

Using Abstract Factory Pattern

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

29

Implementing Factory for DAOStrategy


Using Factory Method Pattern

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

30

Abstract class DAO Factory


public abstract class DAOFactory {
// List of DAO types supported by the factory
public static final int CLOUDSCAPE = 1;
public static final int ORACLE = 2;
public static final int SYBASE = 3; ...
/* There will be a method for each DAO that can be created. The concrete
factories will have to implement these methods. */
public abstract CustomerDAO getCustomerDAO();
public abstract AccountDAO getAccountDAO();
public abstract OrderDAO getOrderDAO(); ...
public static DAOFactory getDAOFactory( int whichFactory) {
switch (whichFactory) {
case CLOUDSCAPE: return new CloudscapeDAOFactory();
case ORACLE : return new OracleDAOFactory();
case SYBASE : return new SybaseDAOFactory(); ...
default : return null;
}
}
April 05
Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br
31
}

Cloudscape concrete DAO Factory


implementation

public class CloudscapeDAOFactory extends DAOFactory {


public static final String DRIVER= "COM.cloudscape.core.RmiJdbcDriver";
public static final String
DBURL=jdbc:cloudscape:rmi://localhost:1099/CoreJ2EEDB";
// method to create Cloudscape connections
public static Connection createConnection() { .. // create a connection }
public CustomerDAO getCustomerDAO() {
// CloudscapeCustomerDAO implements CustomerDAO
return new CloudscapeCustomerDAO();
}
public AccountDAO getAccountDAO() {
// CloudscapeAccountDAO implements AccountDAO
return new CloudscapeAccountDAO();
}
public OrderDAO getOrderDAO() { // implements OrderDAO ...
return new CloudscapeOrderDAO();
}
...April 05
Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br
32

Conseqncias DAO
Transparncia quanto fonte de dados
Facilita migrao para outras implementaes
Basta implementar um DAO com mesma interface
Centraliza todo acesso aos dados em camada separada
Qualquer componente pode usar os dados (servlets,
componentes de negocio, etc)
Camada adicional
Pode ter pequeno impacto na performance
Requer design de hierarquia de classes (Factory)
Exemplos de DAO
DAO para cada Business Object
DAO para servios arbitrrios

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

33

FPSW-Java
Persistncia
de Objetos

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

34

Objetos Transientes x Persistentes


Os objetos de um sistema podem ser classificados em

persistentes e transientes.

Objetos transientes: existem somente na memria principal.


Objetos de controle e objetos de fronteira.
Objetos persistentes: tm uma existncia que perdura
durante vrias execues do sistema.
Precisam ser armazenados quando uma execuo termina,
e restaurados quando uma outra execuo iniciada.
Tipicamente objetos de entidade que correspondem queles
que abstraem conceitos de negcio:
Num sistema de processamento de pedidos: Cliente, Pedido e
Produto.
Numa aplicao financeira: Cliente, Conta, Crdito, Dbito.

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

35

Estratgias de Persistncia
Em aplicaes OO, a persistncia permite que objetos

sobrevivam aps o trmino da sesso em que foram


criados.

Aplicaes OO necessitam armazenar seus objetos


persistentes em um mecanismo de armazenamento
persistente.
Interpretao: o estado de um objeto pode ser
armazenado em disco, para ser restaurado em outra
sesso de uso.

H diversas estratgias que uma aplicao pode aplicar

para alcanar a persistncia de alguns de seus objetos.


A estratgia adequada para uma certa aplicao
depende da complexidade dessa aplicao.
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

36

Estratgias de Persistncia
Vantagens do uso de uma camada de persistncia

separada:

Objetos do negcio podem ser reutilizados em aplicaes


que utilizam diferentes SGBDs.
Objetos de domnio se tornam mais fceis de entender, j
que no implementam acesso a banco de dados.
Melhores manutenibilidade e no reusabilidade.

H diversas estratgias (no exclusivas entre si) de

persistncia. Algumas delas so:

Serializao
SGBD Orientado a Objetos
Frameworks MOR
Padres (Data Source Architectural Patterns): Active
Record, Row Data Gateway, Table Data Gateway, DAO,
Data Mapper

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

37

Uso de Serializao
LPs modernas possuem funcionalidade para descarregar

o estado da aplicao em um arquivo ou em um banco de


dados. Todo o grafo de objetos de uma aplicao
serializado e armazenado, para futura restaurao:

Prevailer (http://www.prevayler.org/wiki.jsp)
Bamboo.Prevalence-http://bbooprevalence.sourceforge.net

Vantagem:
desenvolvedor trabalha em memria principal.
Desvantagens:
Estado da aplicao deve ser gravado/restaurado todo de
uma vez em memria principal.
Mudana do esquema do modelo OO, acesso concorrente...
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

38

Uso de um SGBD Orientado a Objetos


Por que no Bancos de Dados OO?
Um SGBD orientado a objetos possui o conceito de classe
definido internamente. Alguns exemplos:
Versant (http://www.versant.com/)
Ozone (http://www.ozone-db.org/)
db4objects, Inc. (http://www.db4objects.com/)
Entretanto estruturas de dados otimizadas para disco so
diferentes as estruturas otimizadas para memria.
Bancos OO ainda no so to maduros quanto os
relacionais em respeito a recoverabilidade, segurana,
performance e distribuio. Apesar de padronizado pela
OMG: http://www.odmg.org, a tecnologia no se
desenvolveu comercialmente.
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

39

Uso de um SGBD Relacionais


Porque Bancos de Dados Relacionais ?
Tm se mostrado bastante eficintes, o que
levou a uma boa aceitao do mercado.
Algumas aplicaes utilizam-se de Stored
Procedures e Triggers para execuo de regras
de negcio.
Atualmente grande parte da Aplicaes utilizam
e ou integram-se por meio de um Banco de
dados Relacional.

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

40

Estratgias de MOR
Relevncia atual do mapeamento de objetos para o

modelo relacional:

A OO a forma usual de desenvolver sistemas de software.


Por outro lado, os SGBD relacionais dominam o mercado.

Os princpios bsicos so bastante diferentes nos dois

mundos.

MO: elementos (objetos) so abstraes de comportamento


e informaes.
MR: elementos representam informaes no formato tabular.

A universalidade (padronizao) da SQL no ajuda tanto

na soluo do problema.
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

41

Descasamento de informaes
O descasamento de informaes (impedance mismatch)

corresponde ao problema de mapear as representaes


do modelo de objetos e do modelo relacional.
Person

< Table >


Person
FirstName
LastName

FirstName
LastName
List< Order>

< Table >


Order

Order

OrderNr
fkPerson

< Table >


Item Details

OrderNr
List< >Itens

ItemDetail
ProductName

ProductName
fkOrderDetail
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

42

FPSW-Java

April 05

Mecanismos de
Persistncia
de Objetos

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

43

Componentes de um
Mecanismo de Persistncia
Mapeamento OO/Relacional (MOR) ou

Object-relational mapping
Linguagem de Consulta
API de acesso aos dados

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

44

Componentes de um
Mecanismo de Persistncia
Mapeamento OO/Relacional (MOR)
O mapeamento objeto relacional o procedimento de
automatizar a mapeamento dos objetos em tabelas de um
SGBD relacional.
Um modelo OO semanticamente mais rico do que um
modelo Relacional. Vrios modelos Relacionais so
possveis para um mesmo modelo OO
OO e Relacional so tecnologias conceitualmente
diferentes. Um bom Design OO pode no ser um bom
Modelo Relacional. Muitas vezes acabamos sacrificando o
modelo OO por um melhor modelo Relacional.
Objetivos de performance e confiabilidade podem levar a
mapeamentos degenerados, semelhantes a bancos
relacionais no normalizados.
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

45

Componentes de um
Mecanismo de Persistncia
Mapeamento OO/Relacional (MOR)
SQL a linguagem utilizada para interagir com o Banco de
Dados Relacional. Em java utilizamos a API JDBC para
execuo de comandos SQL. Embora essa implementao
seja eficaz, deixa a aplicao sensvel a erros e dificulta a
codificao de rotinas de testes.
Soluo ideal
Ter os conceitos de OO representados no modelo relacional.
Modelo OO independente da implementao Relacional
aproveitando assim o melhor de cada tecnologia.
MOR parece ser ento a melhor soluo para o problema !

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

46

Frameworks para MOR


Um framework MOR um

conjunto de classes que


transforma objetos em linhas de
uma ou mais tabela, e viceversa. Para isso, so utilizados
metadados que descrevem o
mapeamento
entre classes do
modelo de objetos
e tabelas do
banco de dados.

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

47

Recursos de um Framework MOR


Framework MOR
Benefcios: Produtividade, Manutenibilidade, Independncia de
Vendedor (de SGBD), Minimiza LOC (Lines of Code)
Desvantagem: curva de aprendizado, desempenho (?).
Outros recursos:
Uma API para realizar operaes CRUD sobre objetos.
Uma linguagem de consulta sobre o esquema de objetos (em
vez do esquema do banco de dados).
Facilidade para permitir a definio do mapeamento de objetos
para relaes no banco de dados via arquivos de configurao.
manipulao de objeto transacionais.

April 05

Associao tardia (Lazy Fetching e Lazy association),


Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

48

Mapeamento OO-Relacional

manipulao de objeto transacionais (cont.)

Gerncia de cache.
Dirty Checking e Transitive Persistence
Outer Join Fetching
Estratgias bsicas de mapeamento de Herana

Dessa forma com MOR temos

April 05

Transparncia na camada de persistncia


Um melhor ambiente para execuo de testes
Desenvolvedor concentrado mais nas regras de
negcio e menos no cdigo relacionado a persistnca
Estratgia mais robusta quanto a mudanas nos
modelos
Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

49

Exemplos de Frameworks para


MOR
Alguns exemplos de frameworks para MOR:
JPA padronizao para frameworks MOR
Hibernate
NHibernate
JDO
ObJectRelationalBridge
Castor JDO
iBatis SQL Maps
Toplink (comercial)

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

50

Componentes de um
Mecanismo de Persistncia
Linguagem de Consulta
Postergar gravaes at o final das transaes
Inserir/atualizar/deletar menos registros
Utilizar apenas as colunas afetadas
Fim dos problemas de nvel de isolamento de transaes
Lock otimista realizado pelo mecanismo de persistncia
Problema: quando realizar leituras
No acesso a uma propriedade do objeto?
Carga antecipada de objetos relacionados?

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

51

Componentes de um
Mecanismo de Persistncia
O grande avano dos bancos relacionais

em relao s tecnologias anteriores (rede,


hierrquica, ISAM) foi a linguagem de
consulta declarativa
Utilizar apenas o grafo de objetos reverter
para consultas realizadas de forma procedural
Mas um modelo OO no um modelo
Relacional as consultas no so realizadas
em termos de junes (joins), produtos
cartesianos e projees!

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

52

OQL x SQL
SQL necessita de muitos joins:
select nome from produto p, venda v
where p.id = v.produto
OQL pode utilizar o grafo de objetos:
select v.produto.nome from venda v
OQL pode utilizar operadores de conjunto:
select v.cliente from vendas v, in v.produtos p
where sum(p.valor) > 10000
April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

53

Componentes de um
Mecanismo de Persistncia
API de acesso

Fornece os mtodos para recuperao e


atualizao de objetos persistncia
APIs intrusivas:

APIs transparentes:

April 05

Exigem que as classes estendam uma classe ou


implementem uma interface
Utilizam aspectos, manipulao de byte-codes ou
pr-processamento para modificar
dinamicamente as classes e inserir chamadas ao
mecanismo de persistncia
Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

54

Componentes de um
Mecanismo de Persistncia
API de acesso
Basicamente, inserem um objeto persistente no contexto
de uma transao e informam quando a transao
encerrada
Fornecem meios de recuperar objetos persistentes, mas
tambm possvel utilzar os mtodos getXXX dos
prprios objetos
Em geral no h mtodos explcitos para gravar, mas
pode haver um factory para criar instncias persistentes
Na prtica, o desenvolvedor usa mais a API das suas
classes do que do mecanismo de persistncia

April 05

Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br

55

Você também pode gostar