Lo que explicaré ahora será un poco la definición y arquitectura de ese desarrollo. Básicamente la idea era contar con unos objetos que encapsularan la lógica de almacenamiento y recuperación de datos pero usando Java ME, de manera similar como existe ahora en la plataforma Java EE a través de la tecnología EBJ.
La otra premisa de este desarrollo es que RMS utiliza datos en bytes para almacenar la información (Java EE tiene sus propios mecanismos de persistencia de objetos pero para éstas aplicaciones se suele usar una base de datos como Oracle o MySQL).
Primer Paso:
Contar con un objeto de datos que pudiera ser persistente, sea único e identificable, modificable en sus atributos y estado, y, que finalmente pueda ser eliminado del repositorio de datos. El resultado es la definición del objeto DataObject:
package com.saphi.mdba;
public interface DataObject { public int getKey(); public boolean isStored(); public int store() throws RecordStoreException; public void remove() throws RecordStoreException; public void set(byte[] data); public byte[] get(); public Object[] getAttributeValues(); public String getRecordStoreName(); }Segundo Paso:
Lo siguiente es contar con un objeto que administre el ciclo de vida de los objetos de datos, es decir, que nos permita crear, buscar y cargar objetos de datos. Este objeto administrador debe estar enlazado con su objeto de datos de forma que sólo sirva para éste. También es necesario un mecanismo de búsqueda por su clave única o por un conjunto de criterios como el valor de sus atributos. El resultado de la búsqueda podría traer varios objetos de datos, por tanto todos ellos deben manejarse dentro de una colección. Este segundo objeto, más complejo que el anterior, tiene la siguiente definición a través de DataManager:
package com.saphi.mdba; import javax.microedition.rms.RecordStoreException;
public interface DataManager { public Class getDataObject(); public String getRecordStoreName(); public DataObject getInstance(); public DataObject findByKey(int key) throws RecordStoreException; public DataResult find() throws RecordStoreException; public DataResult find(DataFinder finder) throws RecordStoreException; }Como ven en este punto es necesario 2 objetos adicionales DataResult y DataFinder, uno para depositar los objetos de datos producto de la búsqueda (DataResult) a través de un objeto buscador (DataFinder). En el siguiente post, desarrollaré estos dos objetos para completar la definición de DataManager.
En resumen, hasta ahora sólo hemos creado un objeto que representa a la entidad de dato que queremos se guarde en algún repositorio (DataObject) y otro objeto que nos permite controlar el ciclo de vida de los objeto de datos (DataManager).
No hay comentarios:
Publicar un comentario