Amigos,
estou buscando ajuda para continuar desenvolvendo um framework para persistência.
Ele já foi iniciado e funciona em produção na empresa onde trabalho.
A idéia é a construção de um conjunto de classes robustas que facilite o desenvolvimento de objetos que realizam buscas e atualizações em bancos de dados/arquivos texto/arquivos xml, etc.
Só está desenvolvida e funcionando a parte que realizada persistência jdbc. Porém ainda possui muitas limitações.
Abaixo segue um exemplo de como se constroi uma classe usando o framework.
Imagine uma tabela em uma base de dados relacional chamada paises, com a seguinte estrutura de campos:
PAIS NUMBER(4)
DESCRIPCION VARCHAR2(30)
TIPO_PAIS VARCHAR2(1)
A idéia do framework é facilitar a criação do objeto para persistência de tabelas.
Para criar o objeto que realiza persistência nesta tabela deveriamos escrever a seguinte classe:
package org.os.aplic;
import org.os.pers.*;
import org.os.pers.jdbc.*;
public class CRpaises extends GerenteDePersistencia{
private static final String MEU_NOME = "PAISES" ;
public static final int OID = 0 ;
public static final int PAIS = 1 ;
public static final int DESCRIPCION = 2 ;
public static final int TIPO_PAIS = 3 ;
public CRpaises(ConexaoJdbc conn) {
this.create(conn, MEU_NOME);
}
}
Repare que não foi necessário criar método algum além do construtor. Toda a funcionalidade é herdada do objeto GerenteDePersistencia que faz parte do framework.
Segue um programa simples de exemplo que realiza um insert e uma consulta na tabela países usando o objeto que foi criado acima:
package org.os.aplic;
import org.os.pers.jdbc.*;
import org.os.pers.*;
public class Teste {
public Teste() {
}
public static void main(String[] args) {
System.out.println("criando obj conexaoJdbc...");
ConexaoJdbc con = new ConexaoJdbc("marcoc",
"marcoc",
"oracle.jdbc.driver.OracleDriver",
"oracle:oci8:@bateste");
System.out.println("abriando conexaoJdbc...");
if ( !con.open() ){
System.out.println( con.getSqlErrm() );
System.exit(1);
}
System.out.println("criando componente relacional...");
CRpaises paises = new CRpaises(con);
System.out.println("setando valores nos campos...");
paises.set(CRpaises.PAIS , 10 );
paises.set(CRpaises.TIPO_PAIS , "E" );
paises.set(CRpaises.DESCRIPCION, "México");
System.out.println("realizando insert...");
if ( !paises.insert() ){
System.out.println( con.getSqlErrm() );
System.exit(1);
}
System.out.println("realizando busca por tipo de pais...");
int[] keySelectPaises = { CRpaises.TIPO_PAIS };
paises.set(CRpaises.TIPO_PAIS, "E");
if ( paises.select(keySelectPaises) ){
do{
System.out.println( paises.get(CRpaises.DESCRIPCION) );
}while(paises.fetch());
}
}
}
Amigos, se alguém se interessar pelo projeto, posso enviar os fontes e escrever uma documentação detalhada sobre seu funcionamento.
Atenciosamente,
