© Sérgio Soares1 Integrando Java com O2 Sérgio Soares GENTe.

Slides:



Advertisements
Apresentações semelhantes
JAVA Orientação a Objetos
Advertisements

Classes Abstratas e Interfaces
Collections Marco Antonio, Arquiteto de Software – TJDF Atualizado Dezembro/2008.
Entrada e Saída Marco Antonio Arquiteto de Software Dezembro/2007.
Java Conexão com Banco de Dados
LEIC/FEUP Tecnologia de Sistemas de Gestão de Bases de Dados
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Projeto de Sistemas de Software Trabalho de Padrões de Projeto
Padrão de Projeto Iterator
Orientação a Objetos: Modificador Final para Métodos e Classes
Linguagens de Programação Orientadas a Objetos
Caio Nakashima Hibernate Associação Caio Nakashima
JAVA ENUMS © 2009 by Jorge L. de Souza Leão março de 2009 PEE - COPPE/UFRJ.
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
CRIANDO OBJETOS EM JAVA
Hibernate com JPA Prática
Se liga aí, que é hora da revisão!
Acesso a Base de Dados JDBC Trabalho Realizado por:
O Mecanismo de Threads em Java 2. Criar uma classe herdeira da super classe Thread public class minhaThread extends Thread{ public class minhaThread extends.
Concorrência em Java Threads em Java.
Departamento de Estatística e Informática
JAVA Orientação a Objetos
JAVA Linguagem Ambiente de Desenvolvimento
Integração com Banco de Dados
Atributos, Encapsulamento e Interface em Java
Banco de Dados de Objetos
Chamada Remota de Procedimentos
Hibernate Java avançado – PCC Jobson Ronan
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Classes Abstratas e Interfaces.
Os métodos equals() e hashCode()
Orientação a Objetos e Java Graduação em Ciência da Computação
Banco de Dados não Convencionais Fausto Maranhão Ayres 14 BDOO – db4o
The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho.
Pilhas Profa. Nádia Félix.
Listas Simplesmente Encadeadas
Programação Orientada a Objetos - Java
Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007.
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo.
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Polimorfismo.
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Projeto de Sistemas de Informação Prof. Schneider Oracle Object-Relational.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Herança e Arquitetura em camadas
Aula Prática 5 05/05/2010. //Estrutura do método public int subtrair (int a, int b){ //Calcule a operação desejada. int resultado = a – b; //Retorne o.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Coleções em Java - Parte 2
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Socket em Java.
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Engenharia de Software Alexandre Vasconcelos, André Santos, Augusto Sampaio, Hermano Moura, Paulo Borba © Centro de Informática Universidade Federal de.
Leo Silva Leonardo Murta Luiz Viana Persistência em Java.
Aprendendo como funciona o NHibernate Elvis Medeiros Programador .NET
Coleções em Java (Parte 1)
Array e ArrayList LPOO – 01/09/14.
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.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Vendo o código como um bolo... com várias camadas! Interface com o usuário (GUI) Comunicação Negócio Dados.
Persistência de dados e padrão DAO
Persistência de dados e padrão DAO Padrões de Projeto Orientado a Objetos Profa. Danielle Martin/Mauricio Universidade de Mogi das Cruzes.
Transcrição da apresentação:

© Sérgio Soares1 Integrando Java com O2 Sérgio Soares GENTe

© Sérgio Soares2 zNão comprometer reusabilidade, extensibilidade, eficiência zManter independência dos objetos de negócio em relação ao mecanismo de acesso a dados Princípios gerais para a Integração

© Sérgio Soares3 Arquitetura em camadas Classes Básicas Classes Coleção de Dados Classes Coleção de Negócio Classe Fachada Mecanismo de Persistência Mecanismo de Persistência BD

© Sérgio Soares4 Definindo um meio de persistência zImplementar uma classe mecanismo de persistência zImplementar coleções de dados

public interface MecanismoPersistencia { boolean conectar() throws /*...*/; boolean desconectar() throws /*...*/; void iniciarTransacao() throws /*...*/; void confirmarTransacao() throws /*...*/; void cancelarTransacao() throws /*...*/; } // Coleção Dados public interface RepositorioPessoas { void inserir(Pessoa p); void remover(String cpf); Pessoa consultar(String cpf); //... }

© Sérgio Soares6 Integrando o sistema ao SGBDOO O2 zUtilizar a API O2JB (Java Bindings) yExtensão da API JRB xJB também pode ser utilizado para BDR yGerencia os objetos em memória ximplementa o mecanismo de cache yUtiliza a máquina O2 (O2Engine) xeficiência (BDOO) zDefinir um schema no SGBD O2

© Sérgio Soares7 O2JB - O2 Java Bindings zO2 Java Bindings yNão altera as classes persistentes (básicas) xJRB adiciona métodos no código fonte yImporta as classes persistentes para o schema do O2 yImpacto apenas na coleção de dados e mecanismo de persistência

© Sérgio Soares8 Importando classe para o schema do O2 o2jb_import -confirm -url o2:your_server:your_system -schema your_schema Pessoa zRealiza um pós-processamento no bytecode yNão altera o código fonte yJB vs. JRB

© Sérgio Soares9 API O2JB class Database { void connect() {} void disconnect() {} void open(String base) {} void close(String base) {} static void persist(Object o) {} static void delete(Object o) {} //... }

© Sérgio Soares10 API O2JB class Transaction { void begin() {} void commit() {} void abort() {} //... }

© Sérgio Soares11 API O2JB class Extent { static Extent all(String className) {} static Extent proper(String className) {} Extent where(String condition) {} Extent orderBy(String condition) {} Object element() {} Enumeration elements() {} int size() {} } Recupera elementos do SGBD

© Sérgio Soares12 Clase Extent Extent personExtent; personExtent = Extent.all("Person"); personExtent = Extent.proper("Person"); personExtent = Extent.all("Person").where( "this.name = \"John\" and this.age = 36“ ); personExtent = Extent.all("Person").orderBy("this.name"); Person p; for (Enumeration e = personExtent.elements(); e.hasMoreElements() ;) { p = (Person)e.nextElement(); System.out.println(p.name); }

class MecanismoPersistenciaO2JB implements MecanismoPersistencia { private Database db; private Transaction transaction; //... void iniciarTransacao() /*...*/ { //... transaction.begin(); //... } void confirmarTransacao() /*... */ { //... transaction.commit(); //... } //... }

import com.ardentsoftware.jb.api.*; public class RepositorioPessoaBDOO implements RepositorioPessoa { //... public void inserir(Pessoa p) /*...*/ { //... Database.persist(pessoa); //... } public boolean existe(String cpf) /*...*/{ //... Extent ext = Extent.all("Pessoa").where( "this.cpf = \""+ cpf +"\""); return (ext.size() > 0); }

void atualizar(Pessoa pessoa) /*...*/ { //... Extent ext = Extent.all("Pessoa"). where("this.cpf = \""+ pessoa.getCpf() +"\""); if(ext.size() == 1) { p = (Pessoa) ext.element(); p.atualizar(pessoa); } //... } Supondo que os objetos retornados são clones!

© Sérgio Soares16 Persistência não transparente zImportar as classes com a opção –noop yNão realiza o pós-processamento yOs atributos não são atualizados ou recuperados automaticamente do SGBD yNecessidade de aumentar a performance do sistema

© Sérgio Soares17 class Database { //... static void access(Object o) {} static void markModify(Object o) {} } API O2JB

© Sérgio Soares18 Acessando e atualizando objetos shadow O o;... transaction = new Transaction(); P p = o.getP(); // p é shadow, attr não recup Database.access(p); // p deixa de ser shadow... transaction.begin(); // p volta a ser shadow (consist) Database.access(p); // p é recarregado Database.markModify(p); // p é bloq para armazenamento if(...) transaction.commit(); // p é armazenado else transaction.abort(); // p é removido da cache

© Sérgio Soares19 Referências zArdent Software. Ardent Java Bindings for O2 and Relational Databases. O2 Manual, august 1998.