Integrando Java com O 2 Srgio Soares GENTe
- Slides: 19
Integrando Java com O 2 Sérgio Soares GENTe © Sérgio Soares 1
Princípios gerais para a Integração z. Não comprometer reusabilidade, extensibilidade, eficiência z. Manter independência dos objetos de negócio em relação ao mecanismo de acesso a dados © Sérgio Soares 2
Arquitetura em camadas Classe Fachada Mecanismo de Persistência Classes Coleção de Negócio Classes Coleção de Dados Classes Básicas © Sérgio Soares BD 3
Definindo um meio de persistência z. Implementar uma classe mecanismo de persistência z. Implementar coleções de dados © Sérgio Soares 4
public interface Mecanismo. Persistencia { boolean conectar() throws /*. . . */; boolean desconectar() throws /*. . . */; void iniciar. Transacao() throws /*. . . */; void confirmar. Transacao() throws /*. . . */; void cancelar. Transacao() throws /*. . . */; } // Coleção Dados public interface Repositorio. Pessoas { void inserir(Pessoa p); void remover(String cpf); Pessoa consultar(String cpf); //. . . } © Sérgio Soares 5
Integrando o sistema ao SGBDOO O 2 z. Utilizar a API O 2 JB (Java Bindings) y. Extensão da API JRB x. JB também pode ser utilizado para BDR y. Gerencia os objetos em memória ximplementa o mecanismo de cache y. Utiliza a máquina O 2 (O 2 Engine) xeficiência (BDOO) z. Definir um schema no SGBD O 2 © Sérgio Soares 6
O 2 JB - O 2 Java Bindings z. O 2 Java Bindings y. Não altera as classes persistentes (básicas) x. JRB adiciona métodos no código fonte y. Importa as classes persistentes para o schema do O 2 y. Impacto apenas na coleção de dados e mecanismo de persistência © Sérgio Soares 7
Importando classe para o schema do O 2 o 2 jb_import -confirm -url o 2: your_server: your_system -schema your_schema Pessoa z. Realiza um pós-processamento no bytecode y. Não altera o código fonte y. JB vs. JRB © Sérgio Soares 8
API O 2 JB 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 Soares 9
API O 2 JB class Transaction { void begin() {} void commit() {} void abort() {} //. . . } © Sérgio Soares 10
API O 2 JB class Extent { static Extent all(String class. Name) {} static Extent proper(String class. Name) {} Extent where(String condition) {} Extent order. By(String condition) {} Object element() {} Enumeration elements() {} int size() {} } Recupera elementos do SGBD © Sérgio Soares 11
Clase Extent person. Extent; person. Extent = Extent. all("Person"); person. Extent = Extent. proper("Person"); person. Extent = Extent. all("Person"). where( "this. name = "John" and this. age = 36“ ); person. Extent = Extent. all("Person"). order. By("this. name"); Person p; for (Enumeration e = person. Extent. elements(); e. has. More. Elements() ; ) { p = (Person)e. next. Element(); System. out. println(p. name); } © Sérgio Soares 12
class Mecanismo. Persistencia. O 2 JB implements Mecanismo. Persistencia { private Database db; private Transaction transaction; //. . . void iniciar. Transacao() /*. . . */ { //. . . transaction. begin(); //. . . } void confirmar. Transacao() /*. . . */ { //. . . transaction. commit(); //. . . } © Sérgio Soares 13
import com. ardentsoftware. jb. api. *; public class Repositorio. Pessoa. BDOO implements Repositorio. Pessoa { //. . . 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); } © Sérgio Soares 14
void atualizar(Pessoa pessoa) /*. . . */ { //. . . Extent ext = Extent. all("Pessoa"). where("this. cpf = ""+ pessoa. get. Cpf() +"""); if(ext. size() == 1) { p = (Pessoa) ext. element(); p. atualizar(pessoa); } //. . . } Supondo que os objetos retornados são clones! © Sérgio Soares 15
Persistência não transparente z. Importar as classes com a opção –noop y. Não realiza o pós-processamento y. Os atributos não são atualizados ou recuperados automaticamente do SGBD y. Necessidade de aumentar a performance do sistema © Sérgio Soares 16
API O 2 JB class Database { //. . . static void access(Object o) {} static void mark. Modify(Object o) {} } © Sérgio Soares 17
Acessando e atualizando objetos shadow O o; . . . transaction = new Transaction(); P p = o. get. P(); // 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. mark. Modify(p); // p é bloq para armazenamento if(. . . ) transaction. commit(); // p é armazenado else transaction. abort(); // p é removido da cache © Sérgio Soares 18
Referências z. Ardent Software. Ardent Java Bindings for O 2 and Relational Databases. O 2 Manual, august 1998. © Sérgio Soares 19
- Fritz caspers
- Cơm
- Dậy thổi cơm mua thịt cá
- Integrando
- Integrando
- Gente ayudando a otra
- Redes bayesianas
- Percy soares neto
- Name
- Conectivos
- Wagner soares de lima
- Milton soares campos neto
- Edirlei soares de lima
- Edirlei soares de lima
- Edirlei soares de lima
- Kahn soares & conway llp
- Cubilina
- Oscar ribeiro de almeida niemeyer soares
- Frase de magda soares
- Origem soares