Camada de Persistência

Slides:



Advertisements
Apresentações semelhantes
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Advertisements

Banco de Dados Prof. Antonio.
Evolução dos SGBD’s (2ª Parte).
SISTEMAS DE INFORMAÇÃO
Maurício Edgar Stivanello
Sistema Gerenciador de Banco de Dados SGBD
Sistema Gerenciador de Banco de Dados SGBD
Mapeamento Objeto Relacional
Projeto de Sistema Orientado a Objeto
Módulo III Camada de Persistência
Ferramentas CASE ERwin
Conceitos Básicos Dado: fato do mundo real que está registrado e possui um significado implícito no contexto de um domínio de aplicação Exemplos: endereço,
Hibernate Apresentação
Gerenciamento dos Recursos de Dados
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Java Persistence API (JPA) Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Mapeamento de Objetos para Tabelas Relacionais
Middleware e Sistemas Distribuídos
Aplicativos Web Com Orientação a Objetos
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Introdução a Banco de Dados com exercícios de aplicação
Tecnologias de Linguagens para Banco de Dados
Universidade Federal de Lavras - UFLA
Hibernate Mapeamento O/R.
Banco de Dados II Prof. Antônio Cordeiro.
Web Services Uninorte Semana de Tecnologia da Informação
Integração com Banco de Dados
Design Patterns / Acesso ao banco de dados (java.sql)
Prof. Kelly E. Medeiros Bacharel em Sistemas de Informação
Hibernate Java avançado – PCC Jobson Ronan
Hibernate Java avançado – PCC Jobson Ronan
PESQUISADOR: CASSIANO DALCIN / 2010 Trabalho de Conclusão de Curso MINISTÉRIO DA EDUCAÇÃO Universidade Tecnológica Federal do Paraná Campus Medianeira.
Vânia Maria P. Vidal, José Maria Monteiro, Luís Eufrasio T. Neto
Contexto da disciplina
A abordagem de banco de dados para gerenciamento de dados
PostGres: Um Banco de Dados Orientado a Objetos
Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007.
Banco de Dados Aplicado ao Desenvolvimento de Software
Desenvolvimento de Frameworks e Componentes Baseados em Metadados Eduardo Guerra.
Conceitos da arquitetura
Campus de Caraguatatuba Aula 2: Introdução a Tecnologia de BD
Introdução a JEE Marco A. S. Reis Arquiteto de Software Abril/2011.
TECNOLOGIAS E LINGUAGENS PARA BANCO DE DADOS I
Componentes Avançados JPA - API Prof. Leandro Rubim
Ferramentas de Mapeamento OO para ER Aluno Eduardo Mazza Professora Valeria Times
Hibernate: Relacionamentos e Herança
LINQ e Entity Framework
Introdução a Programação Orientada a Objetos
Hibernate Universidade Federal do Rio Grande do Sul Instituto de Informática Web e Sistemas de Informação (2004/2005) Objetos Distribuídos Prof. Dr. Cláudio.
Nilson de Souza Rego Jr.1 Persistência de Dados em.
ODMG - Object Database Management Group Padrão para SGBDOO Consórcio de pesquisadores e fabricantes Objetivo –integração e padronização de funcionalidades.
Alunos: Diogo do Nascimento Leandro Luiz Mendes
Objetos em Bancos de Dados Relacionais Alcides Calsavara.
Banco de Dados Universidade do Estado de Santa Catarina
PãoSoft Sistema de Gerenciamento para Panificadora
UCSal – Bacharelado em Informática
Leo Silva Leonardo Murta Luiz Viana Persistência em Java.
Persistência em Software Orientado a Objetos:
1 Database Systems, 8 th Edition Sistemas de Banco de Dados: Projeto, Implementação e gestão Oitava Edição Capítulo 2 Modelo de Dados.
1 Database Systems, 8 th Edition Sistemas de Banco de Dados: Projeto, Implementação e gestão Oitava Edição Capítulo 2 Modelo de Dados.
PSW1 Prof. Rafael. Persistência Atividade que permite que o estado de um objeto exista mesmo após a extinção do processo computacional que o criou. Em.
Desenvolvimento WEB II Ajax – Utilização de Frameworks Javascript Professora: Kelly de Paula Cunha.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha.
Banco de Dados Parte 1 Profa. Ana Karina Barbosa Fevereiro/2008.
Aspectos de performance EJB Performance tuning Ricardo Cavalcanti Jobson Ronan
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
Prof.: Jean Carlo Mendes
Modelagem de Banco de Dados: Conceitos
Transcrição da apresentação:

Camada de Persistência Estudo comparativo entre EJB, JDO e Hibernate Aluno: Thiago Antônio Marafon Orientador: Prof. Dr. Leandro José Komosinski Membros da Banca: Prof Dr. Ronaldo dos Santos Mello Prof Dr. Frank Augusto Siqueira

Tópicos Introdução JDO Hibernate EJB Estudo de caso Análises Conclusão Contextualização Problema Solução Objetivos JDO Hibernate EJB Estudo de caso Análises Conclusão Trabalhos Futuros

Introdução Contextualização Crescimento da indústria de softwares Busca por novas técnicas Proliferação das tecnologias orientadas a objeto Bancos de dados relacionais consolidados Modelos de dados diferentes “Impedance Mismatch”

Introdução Contextualização O que é Modelo da dados? Modelo de dados Relacional Tabela, Tupla, Coluna, Relacionamento, Chave Modelo de dados orientado a objetos Classe, Objeto, Herança, Identidade, Métodos, Associação Impedance Mismatch Diferenças entre modelos Identificação, relacionamentos, herança. Dificulta o processo de desenvolvimento de softwares Pode comprometer o desempenho Aumento do acoplamento, dificuldades de manutenção

Introdução Bancos de dados orientados a objeto Eliminam o problema do Impedance Mismatch Falta de padronização Sistemas legados

Introdução Camada de Persistência Encapsulam o banco de dados Simulam acesso orientado a objetos, independente do tipo de banco

Introdução

Problema Camada de Persistência minimiza os efeitos do Impedance Mismatch Dentre as várias implementações existentes, qual delas escolher? Padrões : JDO, EJB (Entity Beans) Não padrão: Hibernate

Objetivos Compreender a importância do uso de uma camada de persistência Estudar e descrever aspectos mais importantes das camadas de persistência em questão (JDO, EJB e Hibernate) Realizar estudo de caso (análise prática) Comparar as ferramentas com base na experiência adquirida.

JDO Java Data Objects Java Specification Request 12 Início em 1999, primeira versão em Maio de 2002. Mais recente versão 2.0, liberada em Fevereiro de 2005 Implementação escolhida: JPOX 1.1.0-beta-1 http://www.jpox.org Implementação referência escolhida pela SUN

JDO Arquitetura: Define uma série de classes e interfaces PersistenceManager PersistenceCapable Transaction Query, ...

JDO Enxertador de código Problema crítico na especificação 1.0 Problemas com debugging Baseia-se nas declarações de meta-dados Inserção de byte-codes nos arquivos “.class”

JDO Ciclo de vida dos objetos Transiente Persistente Identidade de objetos: Uma classe para cada chave primária Limitação: subclasses devem utilizar a mesma chave da superclasse

JDO Seleção de dados JDOQL SQL Através do OID Navegação Extent Exemplo de seleção utilizando JDOQL Query q = pm.newQuery (Empregado.class, “salario > sal”); q.declareParameters (“Float sal”); Collection empregados = (Collection) q.execute (new Float (1000.0));

JDO Declaração dos Meta-Dados Descrição através de arquivos no formato XML <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jdo SYSTEM "file:/javax/jdo/jdo.dtd"> <jdo> <package name="exemplo.modelo"> <class name="Person" objectid-class="exemplo.modelo.PersonKey" identity-type="application"> <field name="name" persistence-modifier="persistent“/> <field name="age" persistence-modifier="persistent“/> <field name="cpf" primary-key="true" persistence-modifier="persistent“ null-value="exception“/> </class> </package> </jdo>

Hibernate http://www.hibernate.org Versão utilizada: 3.0 Ferramenta gratuita e código livre Grande destaque na atualidade Não é reconhecido como padrão

Hibernate Arquitetura básica:

Hibernate Classes: Classes que podem ser extendidas SessionFactory Transaction Classes que podem ser extendidas TransactionFactory ConnectionProvider

Hibernate Ciclo de vida dos objetos:

Hibernate Identidade de objetos Chave primária Gerenciamento Nova classe ou atributo Gerenciamento Aplicação ou Hibernate Algoritmos de geração de chaves

Hibernate Seleção de dados Exemplos: OID Navegação HQL Criteria SQL HQL: Query hqlQuery = session.createQuery("from Pessoa as pessoa Where pessoa.nome = ?").setString(0,”Maria”); SQL: Query sqlQuery = session.createSQLQuery("select {p.*} from Pessoa {p} Where p.nome = :nome", "p",Pessoa.class).setString(“nome”,”Maria”); Criteria: Criteria crit = session.createCriteria(Pessoa.class).add( Restriction.like("nome", "Maria"));

Hibernate Definição dos Meta-dados <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="br.com.hibernate.Pessoa" table="PESSOA"> <id name="id“ column="PESSOA_ID“ type="long"> <generator class="native"/> </id> <property name="nome" column=”NOME” type="string"/> </class> </hibernate-mapping>

EJB Solução para sistemas cliente servidor Componentes distribuídos Padrão j2EE Dentre as várias funções, realiza o papel de camada de persistência (Entity Beans) Mais recente versão completa: 2.1 (2003) Drafts e implementações da versão 3.0 já estão disponíveis

EJB EJB 3.0 Grandes mudanças Simplicidade Annotations

EJB Arquitetura Enterprise Beans Aplicação Cliente-Servidor EJB “Objetos Java que contêm a lógica de negócio realizado e que comandam a manipulação dos dados de uma aplicação” Aplicação Cliente-Servidor Funções são disponibilizadas ao cliente que realiza requisições ao servidor EJB Session Beans, Entity Beans, Message-Driven Beans

EJB Entity Beans Visão de um conjunto de dados no banco na forma de objetos Java Operações sobre este objeto são refletidas no banco Entity Beans ficam contidos em um Contêiner de Beans Persistência Concorrência Segurança Controle de Transações

EJB EntityManager Ciclo de vida de um bean Criar, remover, consultar, “contextos de persistência” Ciclo de vida de um bean Novo Gerenciado Desacoplado Removido

EJB Annotations Se parece com um comentário Define meta-dados de um Entity Bean @Entity @Table(name="PESSOA") public class Pessoa implements Serializable { private Long id; private String nome; private Collection telefones; @Id(generate=TABLE) @Column(name=ID, primaryKey=true) public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Column(name="NOME", length=80) public String getNome() { return nome; }

EJB Annotations continuação public void setNome(String nome) { this.nome = nome; } @OneToMany(targetEntity="br.com.ufsc.Telefone", cascade=ALL") @JoinColumn(name="PESSOA_ID", referencedColumnName="ID") public Collection getTelefones() { return telefones; } public void setTelefones(Collection telefones) { this.telefones = telefones; }

EJB Seleção de dados Exemplo de EJBQL EJBQL SQL Métodos da interface “Home”, como na versão 2.1 Exemplo de EJBQL Query query = entityManager.createQuery( "SELECT c FROM Clientes c WHERE c.nome LIKE :cliNome"); query.setParameter("cliNome", nome); query.setMaxResults(10); query.getResultList();

Estudo de caso Problema proposto

Estudo de caso Metodologia Classes Java -> Banco de dados Modelagem do problema pensando nas classes e não no meio persistente Menor esforço para um programador Menos conhecimento sobre banco de dados necessário

Estudo de caso Implementação com JPOX (JDO) Geração dos meta-dados EclipseJDO Criação das tabelas SchemaTool Problemas Não é possível gerar os meta-dados totalmente corretos com base nas classes Java Não foi possível gerar as tabelas através de métodos Incompatibilidade entre definições de meta-dados Encapsulamento dos dados de telefones e formações Estrutura de classes hierárquica sem garantias de integridade (chaves estrangeiras)

Estudo de caso Aplicação final (JDO)

Estudo de caso Estrutura de tabelas (JDO)

Estudo de caso Implementação com Hibernate Geração dos meta-dados Hibernator Geração das tabelas Hibernate Problemas Hibernator gera mapeamentos para a versão 2.1 do Hibernate Hibernator não gera o mapeamento para as relações de herança Precisou-se alterar o mapeamento gerado para a relação entre médicos e pacientes Foram necessárias classes para Telefone e Formação

Estudo de caso Aplicação final (Hibernate)

Estudo de caso Estrutura de tabelas (Hibernate)

Estudo de caso Implementação com Entity Beans Problemas Documentação incompleta Nenhum exemplo completo Falta de suporte por parte da IDE Eclipse Inexistência de geradores de código automático (meta-dados) Sem informações quanto a geração automática de tabelas (presente na versão 2.1) Implementação seria mais trabalhosa do que sem Entity Beans

Análises Quanto a arquitetura Quanto a facilidade para implementações Quanto a transparência Quanto a pesquisa de dados Problemas JDO

Análises Quanto a performance Inserção de dados

Análises Quanto a performance Consulta de dados Consultar dados de todos os pacientes conveniados (nome, data de nascimento, número do convênio, nome do convênio, cpf e endereço) JDO 3.468 segundos Hibernate 2.656 segundos

Conclusões EJB Ainda não apresenta estrutura necessária para desenvolvimento de aplicações de forma eficiente JDO Simples, fácil de utilizar, eficiente, problemas críticos da especificação 1.0 resolvidos Apresentou vários problemas Não se mostrou confiável Problemas relacionados à implementação (JPOX)

Conclusões Hibernate Abrangente, flexível Permite grande controle sobre a aplicação Pode funcionar de forma simples com as opções padrão Robusto Perda na performance Ferramenta equilibrada Tanto para aplicações simples quanto para complexas

Trabalhos futuros Análise de outras ferramentas Ou outras versões destas mesmas Análise de aspectos específicos de camadas de persistência Arquitetura de transações Medição de desempenho Capacidade de expressão das linguagens de consulta Arquitetura de gerenciamento de identidade de objetos

Fim Comentários?