SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Downloaden Sie, um offline zu lesen
Made with OpenOffice.org 1
Camila Arnellas Coelho
Reinaldo Coelho Sartorelli
Persistência de Objetos
via 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.
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 oImpedâ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.
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
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 OQL
OQLQuery 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.

Weitere ähnliche Inhalte

Andere mochten auch

INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...Michel Souza
 
2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simples2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simplesLukinha92
 
Boas práticas com jpa 2 e hibernate flisol 2012
Boas práticas com jpa 2 e hibernate   flisol 2012Boas práticas com jpa 2 e hibernate   flisol 2012
Boas práticas com jpa 2 e hibernate flisol 2012Frederico Maia Arantes
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento ORNécio de Lima Veras
 
Workshop modelando usuários, tarefas e idéias
Workshop modelando usuários, tarefas e idéiasWorkshop modelando usuários, tarefas e idéias
Workshop modelando usuários, tarefas e idéiasKarine Drumond
 
Sistema de gestão de restaurantes self service - ultima versão 3
Sistema de gestão de restaurantes self   service - ultima versão 3Sistema de gestão de restaurantes self   service - ultima versão 3
Sistema de gestão de restaurantes self service - ultima versão 3brunogea
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Claudio Martins
 
Restaurante
RestauranteRestaurante
Restaurantemarcuzu
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPACaelum
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesRosicleia Frasson
 

Andere mochten auch (16)

INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
 
2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simples2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simples
 
Hibernate
HibernateHibernate
Hibernate
 
Jpa, hibernate and jpql
Jpa, hibernate and jpqlJpa, hibernate and jpql
Jpa, hibernate and jpql
 
Hibernate
HibernateHibernate
Hibernate
 
Minicurso jpa e hibernate
Minicurso jpa e hibernateMinicurso jpa e hibernate
Minicurso jpa e hibernate
 
Boas práticas com jpa 2 e hibernate flisol 2012
Boas práticas com jpa 2 e hibernate   flisol 2012Boas práticas com jpa 2 e hibernate   flisol 2012
Boas práticas com jpa 2 e hibernate flisol 2012
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Workshop modelando usuários, tarefas e idéias
Workshop modelando usuários, tarefas e idéiasWorkshop modelando usuários, tarefas e idéias
Workshop modelando usuários, tarefas e idéias
 
Aula JPA
Aula JPAAula JPA
Aula JPA
 
Sistema de gestão de restaurantes self service - ultima versão 3
Sistema de gestão de restaurantes self   service - ultima versão 3Sistema de gestão de restaurantes self   service - ultima versão 3
Sistema de gestão de restaurantes self service - ultima versão 3
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7
 
Restaurante
RestauranteRestaurante
Restaurante
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 

Ähnlich wie Persistência de Objetos via Mapeamento Objeto-Relacional

Bancos de Dados Orientados a Objeto
Bancos de Dados Orientados a ObjetoBancos de Dados Orientados a Objeto
Bancos de Dados Orientados a Objetoelliando dias
 
Banco de dados orientados a objetos
Banco de dados orientados a objetos Banco de dados orientados a objetos
Banco de dados orientados a objetos Raquel Machado
 
Modelo orientado a objetos
Modelo orientado a objetosModelo orientado a objetos
Modelo orientado a objetosDaiana de Ávila
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 
Bancos de Dados Orientados a Objetos
Bancos de Dados Orientados a ObjetosBancos de Dados Orientados a Objetos
Bancos de Dados Orientados a ObjetosGlaucio Scheibel
 
Apresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéApresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéRenzo Petri
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMFábio Rehm
 
Banco dados i prof ivan (acesse www.portalgsti.com.br)
Banco dados i prof ivan (acesse  www.portalgsti.com.br)Banco dados i prof ivan (acesse  www.portalgsti.com.br)
Banco dados i prof ivan (acesse www.portalgsti.com.br)Andre Sidou
 
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoSérgio Souza Costa
 
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemBanco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemSérgio Souza Costa
 
Apostila de Banco dados
Apostila de Banco dadosApostila de Banco dados
Apostila de Banco dadosFernando Palma
 
MongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações webMongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações webRafael Nunes
 

Ähnlich wie Persistência de Objetos via Mapeamento Objeto-Relacional (20)

Bancos de Dados Orientados a Objeto
Bancos de Dados Orientados a ObjetoBancos de Dados Orientados a Objeto
Bancos de Dados Orientados a Objeto
 
Banco de dados orientados a objetos
Banco de dados orientados a objetos Banco de dados orientados a objetos
Banco de dados orientados a objetos
 
Modelo orientado a objetos
Modelo orientado a objetosModelo orientado a objetos
Modelo orientado a objetos
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Bancos de Dados Orientados a Objetos
Bancos de Dados Orientados a ObjetosBancos de Dados Orientados a Objetos
Bancos de Dados Orientados a Objetos
 
Apresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéApresentação Banco de Dados - Caché
Apresentação Banco de Dados - Caché
 
Hibernate
HibernateHibernate
Hibernate
 
Mapeamento objeto relacional
Mapeamento objeto relacionalMapeamento objeto relacional
Mapeamento objeto relacional
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORM
 
MAC5855 - NoSQL
MAC5855 - NoSQLMAC5855 - NoSQL
MAC5855 - NoSQL
 
Banco dados i prof ivan (acesse www.portalgsti.com.br)
Banco dados i prof ivan (acesse  www.portalgsti.com.br)Banco dados i prof ivan (acesse  www.portalgsti.com.br)
Banco dados i prof ivan (acesse www.portalgsti.com.br)
 
Aula1
Aula1Aula1
Aula1
 
Introdução ao banco de dados
Introdução ao banco de dadosIntrodução ao banco de dados
Introdução ao banco de dados
 
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de Encerramento
 
JPA INTRODUÇÃO
JPA INTRODUÇÃOJPA INTRODUÇÃO
JPA INTRODUÇÃO
 
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemBanco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
 
Apostila de Banco dados
Apostila de Banco dadosApostila de Banco dados
Apostila de Banco dados
 
Apostila de banco de dados da ucg
Apostila de banco de dados da ucgApostila de banco de dados da ucg
Apostila de banco de dados da ucg
 
BDOO
BDOOBDOO
BDOO
 
MongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações webMongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações web
 

Persistência de Objetos via Mapeamento Objeto-Relacional

  • 1. Made with OpenOffice.org 1 Camila Arnellas Coelho Reinaldo Coelho Sartorelli Persistência de Objetos via 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.
  • 2. 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 oImpedâ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.
  • 3. 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
  • 4. 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 OQL OQLQuery 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.