Dos capas
El uso de los componentes ClientDataSet y DataSetProvider nos permiten trabajar en dos capas: una de acceso a datos y otra de lógica de datos. La primera más cerca de la base de datos y la segunda más cerca del usuario.Un DataModule para cada capa
Cada una de estas capas puede estar contenida en su propio DataModule. Así, tenemos dos tipos de DataModule: unos de lógica de datos, con componentes ClientDataSet; otros de acceso a datos, con componentes DataSet específicos para cada tecnología de acceso a datos. Y para mayor flexibilidad vamos a usar un tercer tipo de DataModule con componentes DataSetProvider.Para obtener datos la ruta es la siguiente: se abre el ClientDataSet, que le pide datos al DataSetProvider enlazado, que le pide datos al DataSet enlazado. El DataSetProvider empaqueta los datos obtenidos y se los pasa al ClientDataSet.
Para guardar datos la ruta es la siguiente: el ClientDataSet guarda los cambios en un paquete especial (Delta Packet) y cuando se ejecuta el método ApplyUpdates le pasa dicho paquete al DataSetProvider que puede hacer dos cosas: generar sentencias SQL de tipo INSERT, UPDATE o DELETE saltándose los DataSet usados para obtener los datos o aplicar los cambios sobre dichos DataSet para que ellos mismos actualicen la base de datos.
Acceso a datos
Lo ideal será crear un DataModule de este tipo por cada tecnología de acceso a datos que usemos. Normalmente usamos una, pero al migrar nuestras aplicaciones de una versión a otra de Delphi muchas veces nos vemos obligados a cambiar la tecnología de acceso a datos usada.En este tipo de DataModule nunca deberíamos implementar reglas de negocio ni crear campos persitentes (TField) Y si fuera posible deberíamos colocar las sentencias SELECT fuera del código fuente.
Lógica de datos
En este tipo de DataModule van los componentes ClientDataSet, tantos como sean necesarios.Aquí sí podemos implementar reglas de negocio, pero sólo aquellas asociadas a los eventos de los campos (por ejemplo, OnChange) y de los DataSet (por ejemplo, BeforeDelete)
DataSetProvider
En este tipo de DataModule van los componentes DataSetProvider, que conectan los DataSet de los DataModule de acceso a datos con los ClientDataSet de los DataModule de lógica de datos.El DataSetProvider tiene varios eventos que permiten manipular los datos que se obtienen de los DataSet enlazados antes de pasárselos al ClientDataSet y personalizar el proceso de actualización de los cambios recibidos desde el ClientDataSet.
Aquí también podemos implementar reglas de negocio, pero sólo aquellas asociadas al proceso de actualización en sí (por ejemplo, generar un consecutivo para el código de un cliente nuevo)
Descargar proyecto Delphi 2010
No hay comentarios:
Publicar un comentario