A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "© Sérgio Soares1 Integrando Java com O2 Sérgio Soares GENTe."— Transcrição da apresentação:

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

2 © 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

3 © 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

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

5 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); //... }

6 © 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

7 © 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

8 © 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

9 © 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) {} //... }

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

11 © 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

12 © 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); }

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

14 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); }

15 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!

16 © 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

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

18 © 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

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


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

Apresentações semelhantes


Anúncios Google