4
1 Camila Arnellas Coelho Reinaldo Coelho Sartorelli Persistência de Objetos via Mapeamento Objeto-Relacional 2 Persistência de dados Persistência: Persistência: Memória principal: volátil - transiente Armazenamento secundário (disco): durável - persistente 3 Persistência de Objetos Persistência de objetos: Persistência de objetos: Objetos: Objetos: transientes transientes “Capacidade de um objeto de manter seu estado além do ciclo de vida da aplicação” [Keller, 2003] Atributos : variáveis de instância e relacionamentos. Métodos : comportamento (operações). 4 Persistência de Objetos Objetos persistentes Objetos persistentes Persistência das variáveis de instância em algum meio de armazenamento estável (XML, “flat-file”, DBMS). Identificação do objeto, independente do estado do mesmo: Object ID 5 Mecanismos de Persistência Principais mecanismos de persistência de objetos: Principais mecanismos de persistência de objetos: Serialização Serialização XML XML SGBD SGBD Relacionais Estendidos (O/R) Orientados a Objetos 6 Persistência de Objetos: Serialização Serialização Serialização O método de serialização transforma o estado de um objeto em um fluxo de bytes.

Apresentação mapeamento objeto relacional

Embed Size (px)

DESCRIPTION

Apresentação do trabalho de conclusão de curso com imagens que ajudam na compreenção do conteúdo do trabalho descrito.

Citation preview

Page 1: Apresentação mapeamento objeto relacional

Made with OpenOffice.org 1

Camila Arnellas CoelhoReinaldo Coelho Sartorelli

Persistência de Objetosvia Mapeamento Objeto-Relacional

Made with OpenOffice.org 2

Persistência de dados

Persistência: Persistência:

Memória principal:

● volátil - transiente

Armazenamento secundário (disco):

● durável - persistente

Made with OpenOffice.org 3

Persistência de Objetos

Persistência de objetos:Persistência de objetos:

Objetos: Objetos: transientestransientes

“Capacidade de um objeto de manter seu estado além

do ciclo de vida da aplicação” [Keller, 2003]

Atributos: variáveis de instância e

relacionamentos.

Métodos: comportamento

(operações). Made with OpenOffice.org 4

Persistência de Objetos

Objetos persistentesObjetos persistentes

Persistência das variáveis de instância em algum meio de armazenamento estável (XML, “flat-file”, DBMS).

Identificação do objeto, independente do estado do mesmo:● Object ID

Made with OpenOffice.org 5

Mecanismos de Persistência

Principais mecanismos de persistência de objetos:Principais mecanismos de persistência de objetos:

SerializaçãoSerialização

XMLXML

SGBDSGBD

Relacionais

Estendidos (O/R)

Orientados a Objetos Made with OpenOffice.org 6

Persistência de Objetos: Serialização

SerializaçãoSerialização

O método de serialização transforma o estado de um objeto em um fluxo de bytes.

Page 2: Apresentação mapeamento objeto relacional

Made with OpenOffice.org 7

Persistência de Objetos: XML

XML (eXML (eXtensible Markup LanguageXtensible Markup Language))

Padrão para troca de dados (W3C)● Linguagem de marcação para a representação de dados

● Parsing, navegação e consulta

Formato:● Tags aninhadas (well formed).● Elementos (entidade raiz

e filhos) e atributos.● DTD ou XML Schema.

<?xml version="1.0" encoding="ISO-8859-1">

<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>

<!-- registros da agenda -->

<agenda>

<pessoa id="1">

<nome>Silvia Nunes</nome>

<tel>11-123-456</tel>

</pessoa>

</agenda> Made with OpenOffice.org 8

SGBD Relacionais

Sistemas Gerenciadores de Bancos de DadosSistemas Gerenciadores de Bancos de Dados

Alto volume de dados

Propriedades ACID

Bancos de Dados RelacionaisBancos de Dados Relacionais

Modelo Relacional (Dr. E. F. Codd, 1970)● Álgebra e cálculo relacional● Representação simples dos dados em estruturas de tabelas● Linguagem SQL

Made with OpenOffice.org 9

Impedance Mismatch

“ “ Impedância” entre o modelo de dados relacional e o Impedância” entre o modelo de dados relacional e o modelo de objetos: modelo de objetos:

Modelo de Dados● Principíos matemáticos.● Representação de dados em tuplas de tabelas (linha-coluna).● Relacionamentos representados por joins.

Modelo de Objetos● Princípios da engenharia de software.● Dados + Comportamento. Atributos multi-valorados.● Relacionamentos implícitos nos objetos (coleções).

Outros fatores● Diferença entre a sintaxe SQL e da linguagem OOP.● Cultural: programação orientada a objetos X administração de bancos

de dados. Made with OpenOffice.org 10

ORDBMS

Bancos de Dados Estendidos (O/R)Bancos de Dados Estendidos (O/R)

SQL:1999● Extensões do SQL92● LOB, coleções, tipos estruturados, herança e orientação a objetos.● Funções e procedures

● Novos predicados de consulta (SIMILAR, DISTINCT)

Suporte a tipos de dados complexos e definidos pelo usuário.

Orientação a Objetos: (Oracle)● CREATE TYPE as OBJECT● MEMBER FUNCTION● ...

Made with OpenOffice.org 12

Conectividade

Interfaces de conectividade com bancos de dados (CLI)Interfaces de conectividade com bancos de dados (CLI)

Interface de acesso ao banco de dados.

Conexão e chamadas SQL através da linguagem da aplicação.

ODBCODBC

Biblioteca de conectividade comum em linguagens estruturadas.

OCI/OCCIOCI/OCCI

CLI disponíveis para conectividade com bancos de dados Oracle.

OCCI: orientada a objetos, para a linguagem C++

SQL/J e JDBCSQL/J e JDBC

Bibliotecas de conectividade orientadas a objetos.

SQL/J: Proposta de extensões Java para a SQL.

JDBC: Padrão Java de conectividade para bancos relacionais.

Page 3: Apresentação mapeamento objeto relacional

Made with OpenOffice.org 13

Camadas de Persistência

Conceito: camada intermediária entre dados e aplicação.Conceito: camada intermediária entre dados e aplicação.

Separação entre o mecanismo de persistência e as regras de negócio.

Estratégias (Ambler, 2000)Estratégias (Ambler, 2000)

Classes de dados refletindo as classes de negócio

SQL embutido nas classes de negócio

Camada robusta de persistência Made with OpenOffice.org 14

Camada de Persistência: MOR

Persistência TransparentePersistência Transparente

Persistência Ortogonal

Persistência por Alcance (transitiva)

Mapeamento Objeto-Relacional:Mapeamento Objeto-Relacional:

Mapeamento do estado de um objeto para o mecanismo de armazenamento (em geral, para SGBDR).

Técnica de tradução entre o esquema relacional e o modelo de objetos.

Baseada em padrões de projeto de mapeamento:

● Atributos● Relacionamentos● Herança [Fowler, 2002; Ambler, 2000]

Made with OpenOffice.org 15

Mapeamento Objeto-Relacional

Mapeamento Classe – TabelaMapeamento Classe – Tabela

Mapeamento de atributos em colunas

Mapeamento de herança

Made with OpenOffice.org 16

Mapeamento Objeto-Relacional

Mapeamento de HerançaMapeamento de Herança

Há três soluções fundamentais para o mapeamento de herança no modelo relacional [Ambler, 2000]:

Herança de tabela simples:

Uma classe para todas as classes da hierarquia

Made with OpenOffice.org 17

Mapeamento Objeto-Relacional

Herança horizontal:

Uma classe para cada classe concreta da hierarquia

Herança vertical:

Uma classe para cada classe da hierarquia Made with OpenOffice.org 18

Mapeamento Objeto-Relacional

Mapeamento de relacionamentosMapeamento de relacionamentos

Relacionamento 1:1

Relacionamento 1:N

Relacionamento M:N

Page 4: Apresentação mapeamento objeto relacional

Made with OpenOffice.org 19

Frameworks

Mapeamento primitivoMapeamento primitivo

SQL2Java

● Gera as classes baseadas na SQL e os métodos JDBC.

Mapeamento diretoMapeamento direto

Turbine/Torque

● Persistência por herança

ObjectRelationalBridge

Alteração de BytecodeAlteração de Bytecode

Sun JDO

OutrosOutros

EJB-CMP: Padrão de persistência para EJB (entity beans)

Generalizados: SimpleORM, Cayenne Made with OpenOffice.org 20

OJB

OJB (ObjectRelationalBridge)OJB (ObjectRelationalBridge)

Framework de MOR do projeto Apache-DB

Suporte a múltiplas APIs PB (PersistenceBroker)● ODMG 3.0● JDO (em implementação)

Alta escalabilidade● Padrões J2EE JCA e JTA

(transações)● Suporte a serviços JNDI● Integração Web (JSP/Servlets)

QA: Testes extensivos (JUnit)

100% Java e Open Source (APL)

Database

User Interface Classes

Business classes

Persistence Broker

Cache

Made with OpenOffice.org 21

OJB

QueriesQueries

Joins implícitos● Relacionamentos definidos por coleções ● Navegação por iteradores

Classe Criteria

Suporte a OQLOQLQuery query = impl.newOQLQuery();

query.create("select products from "

+ Product.class.getName()

+ " where name = $1"); Made with OpenOffice.org 22

JDBC vs OJB

JDBCJDBC

Connection connection = DriverManager.getConnection

("jdbc:odbc:emt");

Statement stmt = connection.createStatement();

ResultSet rs =

stmt.executeQuery("SELECT firstName FROM PERSON WHERE

lastName LIKE '%Nunes%'");

Collection results = new ArrayList();

while (rs.next()) {

Person person = new Person();

person.firstName = rs.getString("firstName");

results.add(person);

Statement stmtSub = connection.createStatement();

ResultSet rsSub = stmtSub.executeQuery(

"SELECT state FROM PLACE WHERE personId = " +

person.id);

while (rsSub.next()) {

Place place = new Place();

place.state = rsSub.getString("state");

person.local.add(phone);

}

stmtSub.close();

}

stmt.close();

connection.close();

PersistenceBroker broker =

PersistenceBrokerFactory.defaultPersistenceBroker();

Criteria crit1 = new Criteria();

crit1.addLike(“lastName”, “%Nunes%”);

ReportQueryByCriteria q = QueryFactory.newQuery

(Person.class, crit1);

q.setColumns(new String[], {

“firstName”,

“place.state”});

Iterator iter = broker.getReportQueryIteratorByQuery

(q);

OJB

Made with OpenOffice.org 23

Conclusão

Uma camada de MOR apresenta as seguintes vantagens:Uma camada de MOR apresenta as seguintes vantagens:

Desenvolvimento 100% orientado a objetos (encapsulamento, reutilização, portabilidade)

Aplicação não torna-se dependente do mecanismo de persistência(desacoplamento)

Códigos menores e mais legíveis (facilidade de manutenção) e ganho em tempo de desenvolvimento.

Arquitetura do sistema alinhada ao modelo de dados.

Entretanto, há situações onde MOR não é a solução ideal:Entretanto, há situações onde MOR não é a solução ideal:

Perda de velocidade em comparação a linguagem SQL nativa (aproximadamente 3% perda em comparação ao JDBC)

Otimizações de consultas dependem de recursos da camada de persistência.

Aplicações com requisitos de processamento analítico (OLAP) foram desenvolvidas para trabalhar especialmente com operações relacionais.