Made with OpenOffice.org 1
Camila Arnellas Coelho
Reinaldo Coelho Sartorelli
Persistência de Objetos
via Mapeamento Objeto...
Made with OpenOffice.org 7
Persistência de Objetos: XML
XML (eXML (eXtensible Markup LanguageXtensible Markup Language))
P...
Made with OpenOffice.org 13
Camadas de Persistência
Conceito: camada intermediária entre dados e aplicação.Conceito: camad...
Made with OpenOffice.org 19
Frameworks
Mapeamento primitivoMapeamento primitivo
SQL2Java
● Gera as classes baseadas na SQL...
Próxima SlideShare
Cargando en…5
×

Apresentação mapeamento objeto relacional

352 visualizaciones

Publicado el

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

Publicado en: Tecnología
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Apresentação mapeamento objeto relacional

  1. 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. 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. 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. 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.

×