Hola Chaitu,
Conceptos utilizados en Persistencia
Datos transitorios y persistentes
En principio, los programas ABAP trabajan con datos locales del programa, que residen en la sesión interna del programa. Estos datos existen solo mientras dura su contexto: es decir, mientras dure su procedimiento asociado (para datos de procedimientos locales), su objeto (para atributos de clases) o su programa (para datos globales del programa). Estos datos se conocen como transitorios. Los datos que pueden conservarse más allá de la ejecución del programa se conocen como persistentes. En los sistemas SAP, los datos persistentes suelen aparecer como contenido de tablas de bases de datos, pero también como contenido de archivos en servidores de aplicaciones y presentación.
Para trabajar con datos persistentes, el sistema debe cargarlos en objetos de datos transitorios pertenecientes al programa ABAP mientras se ejecuta ese programa. Luego, después de que se haya completado el procesamiento, almacena los datos nuevamente en una forma persistente. Durante este tiempo, el contenido de los datos existe dos veces: una vez en el programa ABAP (transitoriamente) y otra vez en el medio de almacenamiento apropiado (persistentemente). Un proceso típico sería leer datos de una tabla de base de datos utilizando la instrucción SELECT en un área de trabajo transitoria; modificar el área de trabajo; y luego actualizar la tabla de base de datos (usando UPDATE). En tales casos, los contenidos de los datos transitorios y persistentes son diferentes durante este proceso.
Datos en programación orientada a objetos
En una aplicación ideal orientada a objetos, los datos ocurren solo como atributos de objetos (si ignoramos los datos locales en los métodos por el momento). Los objetos son una agregación de funciones (en métodos) y datos (en atributos). La descripción de un objeto, es decir, la clase, existe persistentemente como una pieza de código fuente, pero sus atributos existen solo mientras exista el objeto. Sin embargo, un objeto en ABAP Objects es transitorio en principio. Existe en la sesión interna del programa solo desde el momento en que se genera (usando CREATE OBJECT) hasta que es eliminado por el Recolector de Basura. Por lo tanto, para trabajar con datos persistentes en objetos, debes programar el acceso a donde se almacenan esos objetos dentro de los métodos de la clase.
Sin embargo, en la programación de aplicaciones empresariales completamente orientadas a objetos, es inútil simplemente transferir la separación clásica de datos y funciones a los métodos, es decir, trabajar con objetos pero usar programación procedural dentro de los propios objetos. Idealmente, podrías guardar la encapsulación de datos y funciones persistentemente dentro del objeto. Un programa podría dejar un objeto en un cierto estado y un segundo programa podría seguir trabajando en el objeto en ese estado. Las clases de objetos ya son persistentes de todos modos, pero necesitas alguna forma de guardar los atributos de un objeto persistentemente y luego hacer referencia a la clase apropiada. El Servicio de Persistencia te permite hacer exactamente eso.
El Servicio de Persistencia para Objetos Persistentes
Técnicamente hablando, los objetos ABAP son siempre transitorios, al igual que los objetos de datos en los programas ABAP. No hay objetos persistentes en ABAP Objects. Sin embargo, el Servicio de Persistencia dentro de Object Services permite a los desarrolladores de aplicaciones trabajar con objetos persistentes. El Servicio de Persistencia puede considerarse como una capa de software entre el programa ABAP y el repositorio de datos (es decir, la base de datos), que te permite guardar los atributos de objetos con una identidad única, y luego cargarlos nuevamente cuando los necesites.
En resumen, el Servicio de Persistencia garantiza que un objeto se inicialice en un estado especificado y guarda el estado de ese objeto cuando sea necesario. La relación entre el objeto y la descripción de su estado en la base de datos es similar a la relación entre datos transitorios y persistentes descrita anteriormente. El estado del objeto cuando se instancia refleja el estado de los datos en la base de datos en ese momento. Los cambios en el estado del objeto en el programa ABAP no se escriben en la base de datos inmediatamente, sino solo después de que se haya realizado la solicitud apropiada (es decir, se haya ejecutado la instrucción COMMIT WORK). Por lo tanto, un objeto persistente existe como original en la base de datos y como copia en uno o más programas ABAP. Si varios programas utilizan el Servicio de Persistencia para instanciar objetos de la misma clase antes de que uno de estos programas haya cambiado el estado usando COMMIT WORK, todos los objetos tendrán el mismo estado inicial. Actualmente, no hemos implementado un concepto de bloqueo del Servicio de Persistencia, que garantizaría que hubiera solo un mapeo transitorio para cada objeto persistente. Por lo tanto, en última instancia, los programadores ABAP no están trabajando realmente con objetos persistentes como tales; más bien, el Servicio de Persistencia hace que parezca que lo están.
Clases Persistentes
Para usar el Servicio de Persistencia para objetos, las clases de estos objetos deben crearse como clases persistentes en el Constructor de Clases. El término clase persistente no implica que una clase sea persistente. (Como plantilla para objetos, cada clase es persistente). Más bien, significa que los objetos de esa clase y su estado son gestionados por el Servicio de Persistencia. Por ejemplo, los objetos de estas clases se instancian en el programa ABAP con un método del Servicio de Persistencia, que garantiza que la inicialización sea correcta (no con la instrucción CREATE OBJECT habitual). Cuando el Constructor de Clases crea una clase persistente, genera automáticamente una clase asociada, conocida como el actor de clase o agente de clase, cuyos métodos gestionan los objetos de