You are on page 1of 27

Fundamentos de Ingeniera de Software

Marcello Visconti y Hernn Astudillo Departamento de Informtica Universidad Tcnica Federico Santa Mara {visconti,hernan} en inf.utfsm.cl

Fundamentos de Ingeniera de SW

Esquemas, Patrones y Persistencia Esquemas, Patrones y Persistencia


? Objetivos:
? Definir el concepto de esquema (Framework) ? Aplicar patrones para el diseo de un modelo persistente
? Mtodo de la Plantilla ? Instanciacin de Objetos complejos ? Uso de Agentes virtuales

Fundamentos de Ingenier a de SW

Esquemas, Patrones y Persistencia Introduccin


? En los sistemas actuales es necesario guardar informacin en medios de almacenamiento persistente (Bases de Datos) ? Cmo guardar objetos en dichos medios? ? Se introducir un esquema de persistencia para enfrentar esta problemtica ? Objeto persistente: Objeto instanciado en memoria que debe ser almacenado en un medio no voltil
? por ej., EspecificacionDeProducto

? Objetivo: Disear un esquema que permita disear objetos que den servicios (mtodos) a otros objetos para ser almacenados en un medio persistente

Fundamentos de Ingenier a de SW

Esquemas, Patrones y Persistencia Mecanismos de Almacenamiento


? Mecanismos de Almacenamiento ms comunes son: ? Bases de datos Orientadas a Objeto:
?Presentan la ventaja de no necesitar servicios especficos de persistencia.

? Bases de datos Relacionales:


?Son las ms utilizadas hoy en da. ?No poseen mtodos para almacenamiento de objetos. ?Se requieren de servicios especiales para almacenar objetos en las tablas.

Fundamentos de Ingenier a de SW

Esquemas, Patrones y Persistencia Esquema (Framework)


? Esquema: subsistema expandible de un conjunto de servicios afines.
? Conjunto cohesivo de clases que prestan servicios a la parte fundamental e invariable de un sistema lgico. ? Contiene clases concretas y abstractas definiendo las interfaces e interacciones en que participarn. ? En general es necesario que el usuario defina subclases adaptando los servicios definidos en el esquema. ? Posee clases abstractas que pueden incluir mtodos abstractos y concretos.

Fundamentos de Ingenier a de SW

Esquemas, Patrones y Persistencia Esquema de Persistencia [1]


? Esquema de persistencia es un conjunto reutilizable de clases que presentan servicios a los objetos persistentes ? Se utiliza para trabajar con bases de datos relacionales, una API de servicios de datos orientados a registros (Microsoft ODBC) u otro mecanismo de almacenamiento ? No se utiliza en Bases de Datos orientadas a objetos ? En general, este esquema debe traducir los objetos a registros para guardarlos en una base de datos y viceversa

Fundamentos de Ingenier a de SW

Esquemas, Patrones y Persistencia Esquema de Persistencia [2]


Objetos realizan llamadas a servicios implementados en el esquema de persistencia Definici Definicin del sistema

Traduce los objetos a registros y a la inversa para almacenarlos en algn medio de almacenamiento

Esquema relacional de persistencia de objetos

Base de Datos Relacional


Fundamentos de Ingenier a de SW 7

Esquemas, Patrones y Persistencia Esquema de Persistencia - Requerimientos


? Un Esquema de Persistencia debera ofrecer los siguientes servicios:
? Almacenamiento y recuperacin de objetos ? Transacciones del tipo commit y rollback
? commit - completar la transaccin de guardar ? rollback - deshacer la transaccin, restaurar el estado anterior

? El diseo de un EP debe considerar lo siguiente:


? Extendible para otros medios de almacenamiento ? Realizar la menor cantidad posible de modificaciones al cdigo

Fundamentos de Ingenier a de SW

Esquemas, Patrones y Persistencia Trminos [1]


? Mapeo
? Relacin entre una clase y su almacenamiento persistente (p.ej. una tabla de la BD), y entre los atributos del objeto y los campos (columnas) de un registro.

? Identidad del Objeto


? Los registros y los objetos deben tener un identificador nico para relacionarlos fcilmente y evitar duplicados.

? Broker (Intermediario de Base de Datos)


? Agente especializado (broker) de la Base de Datos se encarga de materializar y desmaterializar.

? Materializacin
? Es el acto de transformar una representacin no orientada a objetos (e.g registros) a objetos.

? Desmaterializacin
? Acto contrario a Materializar.
Fundamentos de Ingenier a de SW 9

Esquemas, Patrones y Persistencia Trminos [2]


? Cach
? Los Brokers poseen un cach (generalmente en memoria principal) en donde almacenan los objetos materializados.

? Materializacin lenta por demanda (MLPD)


? La materializaci n se lleva a cabo nicamente cuando el objeto almacenado es necesitado por otro.

? Referencias inteligentes
? Para hacer transparente la MLPD se crea una referencia inteligente llamada agente virtual.

? Objetos complejos
? Materializaciones de estructuras complejas de objetos.

Fundamentos de Ingenier a de SW

10

Esquemas, Patrones y Persistencia Trminos [3]


? Estado de la transaccin del Objeto
? El estado de un objeto persistente puede modificarse en una transaccin, por lo que es deseable llevar un registro de los cambios que sufre para realizar la actualizacin.

? Operaciones de transacciones
? Operaciones commit y rollback.

? Bsqueda
? Localizacin y materializacin de los objetos a partir de algunos criterios.

Fundamentos de Ingenier a de SW

11

Esquemas, Patrones y Persistencia Mapeo


? Cmo mapear un objeto a un archivo o a un esquema de bases de datos relacional? ? El patrn Representacin de objetos como tablas propone definir una tabla por objeto persistente, en donde sus atributos equivalgan a una columna de la tabla
? Es una buena aproximacin para tipos primitivos de datos, pero para tipos complejos, este mtodo no es tan simple

Fundamentos de Ingenier a de SW

12

Esquemas, Patrones y Persistencia Identidad del Objeto [1]


? Cmo identificar a que instancia de objeto corresponden los registros de la tabla?
? Conviene contar con un medio que relacione los registros con los objetos y que asegure la no duplicidad de stos.

? El patrn Identificador de Objetos (IDO) propone asignar un IDO a cada registro y objeto (o agente de un objeto) que los relacione.
? En general, es un valor alfanumrico.

? Toda tabla de la base de datos relacional tiene un IDO como clave primaria, el que tambin est contenido como atributo en el objeto

Fundamentos de Ingenier a de SW

13

Esquemas, Patrones y Persistencia Identidad del Objeto [2]


? Ejemplo:
:Venta fecha=1/1/1997 Fecha IDO hora
IDO Fecha 1/1/1997 2/2/1997 Hora 10:00 14:00 Xyz123 Abc345

Venta

Ido=xyz123 Hora=10:00

seTermina()

:Venta

El IDO puede definirse en un objeto Agente

fecha=2/2/1997 Ido=Abc345 Hora=14:00

Clave Primaria

Fundamentos de Ingenier a de SW

14

Esquemas, Patrones y Persistencia Broker (Intermediario de la BD) [1]


? Quin es responsable de materializar y desmaterializar los objetos desde un almacenamiento persistente, p.ej. EspecificacionDeProducto? ? El patrn Experto seala que debera hacerlo la clase de objeto persistente EspecificacionDeProducto. ? No es muy buena solucin:
? Existira un muy alto acoplamiento. ? Se pierde la cohesin pues la responsabilidad est fuera del dominio del objeto.

Fundamentos de Ingenier a de SW

15

Esquemas, Patrones y Persistencia Broker (Intermediario de la BD) [2]


? El patrn Intermediario de Base de Datos propone construir una clase que se encargue de materializar, desmaterializar y guardar un objeto en un objeto cach (Clase intermediaria). ? Cada objeto persistente puede tener su propia clase intermediaria y que los mecanismos de almacenamiento pueden contar con varias clases de Intermediarios.
Superclase abstracta de todos los intermediarios de bases de datos relacionales Intermediariode EPRelacional IntermediariodeEP Clase concreta encargada de materializar los objetos Ventas a partir de una base de datos relacional Intermediariode EPArchivos

IntermediarioRelacional deEspecifdeProducto

Intermediario RelacionaldeVentas

IntermediariodeArchivos EspecifdeProductos

Intermediariode ArchivodeVentas

Fundamentos de Ingenier a de SW

16

Esquemas, Patrones y Persistencia Diseo de Intermediarios: Mtodo de la Plantilla


? El patrn utilizado para el diseo de clases intermediarias.
? Se define una clase plantilla, la cual puede ser utilizada para definir el esqueleto de un algoritmo:
? con partes variables que se pueden modificar al heredarse a una subclase. ? e invariables, que no pueden ser modificadas.

? Estos mtodos pueden o no estar en una subclase y por general llaman a otros mtodos.

? Se sigue el Principio de Hollywood: no nos llame, nosotros le llamaremos .


? Es decir, un mtodo de una subclase ser ejecutado slo si este es llamado desde la clase en la cual fue definido.

Fundamentos de Ingenier a de SW

17

Esquemas, Patrones y Persistencia Diseo de Intermediarios: Mtodo de la Plantilla


? Ejemplo:
metododePlantilla {.. operacionPrimitiva() operacionConcreta() } Operaciones abstractas primitivas: -partes variables -se desplazan (emiten) en la subclase Operaciones concretas -comportamiento por omisin -si puede ser desplazado en una subclase, recibe el nombre de mtodo de gancho
Clase Concreta Clase Abstracta

Mtodo de plantillas: define el esqueleto de un algoritmo con partes variables e invariables.

MetododePlantilla() operacionPrimitiva() operacionConcreta()

operacionPrimitiva()

Fundamentos de Ingenier a de SW

18

Esquemas, Patrones y Persistencia Materializacin: Patrn mtodo de plantillas [1]


? La lgica de materializacin suele requerir que se genere una instancia de la clase apropiada y que luego se desplacen los datos del registro hacia los atributos de la nueva instancia.
IntermediariodeEP objectWith(anOID) : Object inCache(anOID) : Object materializeWith(anOID) : Object

RegistrodeBDR campo(nombredeArchivo ) : Objeto 1

IntermediarioEPRelacional currentRecordAsObject() : Object materializeWith(OID) : Object selectFirst(query) : Object

IntermediariodeEPdeArchivos materializeWith(OID) : Object

Registro-actual-de

Una tcnica totalmente diferente para materializar a partir de archivos planos. IntermediarioRelacionaldeVentas currentRecordAsObject() : Sale

IntermediarioRelacionaldeEspecific aciondeProducto currentRecordAsObject() : ProdSpec

Fundamentos de Ingenier a de SW

19

Esquemas, Patrones y Persistencia Materializacin : Patrn mtodo de plantillas [2]


? Tener un Intermediario para los mecanismos de almacenamiento persistente es muy til para desarrollador.
? Puede agregar ms clases para adaptarla a nuevos medio o a los ya existentes.

? Clase IntermediariodeEP se comporta como un agente virtual.


? A travs del mtodo objectWith(anOID) toma el identificador como parmetro y devuelve su objeto. ? Posee manejo de Cach.
? Si el objeto ya ha sido referenciado antes, no ser materializado nuevamente.

? El mtodo de la plantilla define partes variables e invariables:


? Invariables: Mtodos que no pueden ser modificados. ? Variables: Mtodos que pueden ser adaptados por los programadores para amoldar el esquema a un tipo especfico de tecnologa o mtodo.

Fundamentos de Ingenier a de SW

20

10

Esquemas, Patrones y Persistencia Materializacin : Patrn mtodo de plantillas [3]


? Caractersticas clsicas del diseo de esquemas:
? Uso de mtodos definidos con anterioridad en superclases abstractas. ? Incorporacin de subclases definidas por el programador. ? Definicin de los mtodos de operacin primitiva en las subclases para completar los mtodos de plantilla heredados.

Fundamentos de Ingenier a de SW

21

Esquemas, Patrones y Persistencia Cach


? El mecanismo de cach puede ser utilizado para dos cosas:
? Mejorar el desempeo.
? Materializar es lento.

? Soporte de las operaciones de administracin de transacciones.

? El patrn Administracin de Cach propone asignar a los intermediarios la responsabilidad de administrar el cach.
? Si se tiene un intermediario diferente para cada tipo de objeto persistente, cada uno de ellos deber tener su propia cach.

? Al materializar un objeto este se deja en cach con su identificador como clave.


? El intermediario primero buscar en este antes de materializar un objeto.

Fundamentos de Ingenier a de SW

22

11

Esquemas, Patrones y Persistencia Cach: Administracin de Transacciones


IntermediariodeEP 1 Guarda-objetos-en 6 CachedeObjetos

objectWith(anOID): Object inCache(anOID): Object materializeWith(anOID): Object

Add(OID, Object) Find(OID): Object isEmpty (): Boolean

? Otra forma de conservar los objetos es en varias cachs, segn el estado que presenten dentro del contexto de la transaccin actual. ? El intermediario conserva hasta 6 tipos diferentes de cachs lo que permite sentar las bases para realizar las transacciones sobre la BD.

Fundamentos de Ingenier a de SW

23

Esquemas, Patrones y Persistencia Cach: Tipos


? Los 6 tipos de cachs son:
? Cach Limpia y Nueva: Objetos nuevos sin modificaciones. ? Cach Limpia y Vieja: Objetos viejos que se materializan de una BD sin modificaciones. ? Cach Sucia y Nueva: Objetos nuevos, modificados. ? Cach Sucia y Vieja: Objetos viejos que se materializaron de una BD y que fueron modificados. ? Cach Eliminar Nueva: Objetos nuevos a eliminar. ? Cach Eliminar Vieja: Objetos viejos que se materializaron a partir de una base de datos y que deben ser eliminados.

Fundamentos de Ingenier a de SW

24

12

Esquemas, Patrones y Persistencia Referencias Inteligentes


? Materializacin lenta por demanda: materializacin de un objeto slo ocurre cuando sea absolutamente necesario.
? Se puede implementar a travs de un agente virtual.

? Agente Virtual (Proxy): representante de un objeto real.


? Este es el encargado de materializar al objeto real por primera vez cuando se referencia. ? Los clientes debern interactuar con el agente en vez de hacerlo con el objeto real.
? Un objeto cliente tiene una referencia al objeto Agente Virtual y no al sujeto real. ? El agente virtual implementa la misma interfaz que ese sujeto.

Fundamentos de Ingenier a de SW

25

Esquemas, Patrones y Persistencia Referencias Inteligentes: Ejemplo


? Ejemplo con VentasLineadeProductos y EspecificaciondeProducto.
? El diseo est basado en el supuesto que los agentes conocen el identificador de objetos de su sujeto real. ? Cuando la materializacin es requerida, el identificador sirve para localizar y recuperar el sujeto real.
<<Clase>> VentasLineadeProducto cantidad Subtotal() n
Descrita_por

<<Interfaz>> IEspecificaciondeProducto descripcion() precio() cup()

<<Clase>> EspecificaciondeProducto descripcion Agente_de precio description() cup 1 getRealSubject() n 1 materializeSubject() descripcion() price() precio() cup() cup() Fundamentos de Ingenier a de SW 26

<<Clase>> AgenteEspecificaciondeProducto ido : IDO

13

Esquemas, Patrones y Persistencia Agente Virtual (Proxy) Generalizado


? La especificacin de todos los agentes puede definirse en una superclase llamada AgenteVirtual.
? As solo es necesario modificar las instancias especficas para atender a los diferentes objetos reales que componen el sistema.
comportamiento y atributos generales de todos los agentes <<Clase>> AgenteVirtual ido : IDO getRealSubject() materializeSubject() n <<Interfaz>> InterfazdeAgente solicitud() <<Clase>> AgenteVirtualConcreto solicitud() Fundamentos de Ingenier a de SW 1 <<Clase>> SujetoReal solicitud() 27 Agente-de

Esquemas, Patrones y Persistencia Agentes Virtuales (Proxies) e intermediarios en BD


? Un agente virtual (AV) puede colaborar con un Intermediario de Bases de Datos (Broker) a fin de Materializar un objeto, utilizando el identificador de objetos usado por el agente.

<<Clase>> AgenteVirtual ido : IDO getRealSubject() materializeSubject() 1

IntermediariodeEP Materializa-a partir de 1 objectWith() inCache() materializeWith()

if (realSubject not materialized) materializeSubject() return realSubject

Fundamentos de Ingenier a de SW

28

14

Esquemas, Patrones y Persistencia Conexin entre AV e Intermediario de BD


? Cmo un AV concreto sabe cul intermediario de BD habr de utilizar? ? Utilizando el patrn Mtodo de Fbrica: La operacin primitiva se encarga de crear una instancia.
? El agente es responsable de pedir el representante para la BD. ? Es conveniente tener una sola instancia de cada intermediario.

? Cuando se usan agentes virtuales, conviene que toda referencia a objetos se efecte a travs de objetos agente y no a travs de referencias directas.
? Todas las definiciones de atributos se refieren a objetos agentes a interfaces, no a objetos directos. ? Todos los parmetros se refieren a objetos agente o a interfaces.

Fundamentos de Ingenier a de SW

29

Esquemas, Patrones y Persistencia Conexin entre AV e Intermediario de BD


//mtodo de plantilla if(broker not created) broker:=createBroker() Return broker <<Clase>> AgenteVirtual ido : IDO createBroker() getBroker() getRealSubject() materializeSubject() Mtodo Fabrica 1 IntermediariodeEPRelacional 1 realSubject:= getBroker().objectWith(ido) IntermediariodeEPRelacional ObjectWith()

intermediario

<<Clase>> AgenteEspecificaciondeProducto createBroker() description() price() upc()

return ProductSpecificationRelationalBroker.Instance() Fundamentos de Ingenier a de SW 30

15

Esquemas, Patrones y Persistencia Cmo representar Relaciones en Tablas


? Cmo representar las relaciones de objetos en una tabla de una base de datos relacional?
? Utilizando el patrn Representacin de objetos como tablas.

? Segn la relacin entre los objetos se propone:


? Asociaciones uno a uno.
? Colocar una clave fornea del IDO en una o en las dos tablas que representan los objetos en la relacin.

? Asociaciones uno a muchos:


? Crear una tabla asociativa que registre los identificadores de cada objeto en la relacin.

? Asociaciones muchos a muchos:


? Crear una tabla asociativa que registre todos los identificadores de objetos en la relacin.

Fundamentos de Ingenier a de SW

31

Esquemas, Patrones y Persistencia Patrn Instanciacin de Objetos Complejos [1]


? Problema: Cundp implementar Agentes Virtuales e Intermediarios de BD?
? Cuando los objetos pueden pertenecer a una jerarqua de composicin profunda. ? Cuando si se quiere materializar un objeto es posible que haya que materializar tambin decenas de objetos relacionados. ? La materializaci n de una jerarqua integra de composicin usa el espacio lenta e ineficientemente.

? Solucin: Aplazar la materializacin de los objetos, dependiendo de los patrones de acceso y los requerimientos de desempeo, hasta que sea necesario.
? Hay veces en que conviene materializar uno o dos niveles de profundidad ? Con un intermediario distinto para cada objeto persistente, es posible decidir, intermediario por intermediario, el grado de materializacin de los objetos persistentes y sus objetos asociados
Fundamentos de Ingenier a de SW 32

16

Esquemas, Patrones y Persistencia Patrn Instanciacin de Objetos Complejos [2]


? Ejemplo: Materializar la instancia VentasLineadeProducto.
? Suponer que la informacin se encuentra almacenada en las siguientes tablas.

IDO vli1 vli2 1 2

Cantidad

IDO p1 p2

descripcion pauelos tempeh

precio 1.50 2.25

cup 111 222

ventasLineadeProducto
VLI -IDO vli1 vli2 EP -IDO P1 P2

EspecifdeProducto

ventasLineadeProducto-a-EspecifdeProducto
Fundamentos de Ingenier a de SW 33

Esquemas, Patrones y Persistencia Patrn Instanciacin de Objetos Complejos [3]


? Se sabe que el IDO de VentasLineadeProducto es vli1. ? Si se ejecuta el siguiente cdigo:

//Crear el agente AgenteVentasLineadeProducto unVLI= new AgenteVentasLineadeProducto(vli1), //Causa materializacin de los objetos Int total = unVLI.subtotal();

Fundamentos de Ingenier a de SW

34

17

Esquemas, Patrones y Persistencia Patrn Instanciacin de Objetos Complejos [4]


1: o:=getRealSubject() Crear("vli1") : AgenteVentasLineaDeProducto t:=subtotal() 2: t:=subtotal() o : VentasLineaDeProducto

1: [not materialized ] materializeSubject() 1.1: b:=getBroker () o:=getRealSubject() : AgenteVentasLineaDeProducto VentasLineadeProducto vli:=new VentasLineadeProducto vli.cantidad(currentRecord.field("cantidad)) //recuperar el IDO de EspecifDeProducto asociado SELECT * from VentasLineadeProducto-a-EspecifiDeProducto where VLI-IDO= :ido EspecifDeProdIDO=currentRecord.field("EP-IDO") //crear el intermediario a la EspecifDeProducto IntermediarioEspecifdeProducto intermediario = new IntermediarioEspecifiDeProducto(EspecifDeProdIDO) //guardar intermediario en VLI vli.especifdeProducto=intermediario return vli

Finalmente, llega a este mensaje N: o:=currentRecordAsObject() 1.2: o:=objectWith((ido) b : IntermediarioVentasLineaDeProducto

Fundamentos de Ingenier a de SW

35

Esquemas, Patrones y Persistencia Patrn Instanciacin de Objetos Complejos [5]


? VentasLineadeProducto referencia a un agente, no a la EspecificaciondeProductos real.
? Esta ltima no se materializar mientras no se le enve el mensaje precio.

Fundamentos de Ingenier a de SW

36

18

Esquemas, Patrones y Persistencia Patrn Instanciacin de Objetos Complejos [6]


2: o:=getRealSubject()

1: p:=precio() : VentasLineaDeProducto t:=subtotal() : AgenteEspecifDeProducto 3: p:=precio() o : EspecificacionDeProducto

1: [not materialized ] materializeSubject() 1.1: b:=getBroker () o:=getRealSubject() : AgenteEspecifDeProducto

Finalmente, llega a este mensaje

N: o:=currentRecordAsObject() 1.2: o:=objectWith(()ido)

EspecificacionDeProducto ep:=new EspecificacionDeProducto ep.descripcion=currentRecord.field("descripcion") ep.precio=currentRecord.field("precio") ep.cup=currentRecord.field("cup") return ep

b : IntermediarioEspecifDeProducto

Fundamentos de Ingenier a de SW

37

Esquemas, Patrones y Persistencia Operaciones Transaccionales [1]


? Estado de transaccin de los objetos:
Limpio y nuevo. Objetos nuevos, sin modificaciones Limpio y viejo. Objetos viejos, sin modificaciones Sucio y nuevo. Objetos nuevos, sin modificaciones Sucio y viejo. Objetos viejos materializados a partir de una base de datos con modificaciones ? Eliminar nuevo. Objetos nuevos que deben ser eliminados ? Eliminar viejo. Objetos viejos que fueron materializados a partir de una base de datos y que deben ser eliminados ? ? ? ?

? El Intermediario de BD conservar cachs especiales para cada uno de estos estados y garantizar con ello que un objeto est en la cach apropiada.

Fundamentos de Ingenier a de SW

38

19

Esquemas, Patrones y Persistencia Operaciones Transaccionales [2]


? Cmo se ensucia un objeto?
? Un objeto se ensucia al modificar uno de sus atributos a travs de un mtodo mutador (establecedor) ? Por ejemplo:
// clase Especificaci ndeProducto void price(float p) { price = p; BrokerServer.instance().dirty(this); }

? Al ServidordeIntermediario (Fachada) se le notificar que un objeto est sucio


? Este encontrar el Intermediario apropiado de la BD para esta clase de objetos y le notificar que el objeto est sucio ? El Intermediario introduce el objeto en una cach sucia. Vieja y sucia si era un objeto materializado

Fundamentos de Ingenier a de SW

39

Esquemas, Patrones y Persistencia Operaciones Transaccionales [3]


? Cmo eliminar?
? Es necesario registrar explcitamente el hecho para que se pueda realizar la modificaci n correspondiente en la BD luego de una operacin commit ? Por ejemplo:
// clase CatalogodeProductos void removeProductSpec(ProductSpec p) { // eliminar p en la coleccin de ProductSpec ProductSpec.remove(p); // notificarle al intermediario que p debe eliminarse BrokerServer.instance().delete(p); }

? Al ServidordeIntermediario se le notificar que un objeto est sucio

Fundamentos de Ingenier a de SW

40

20

Esquemas, Patrones y Persistencia Operaciones Transaccionales [4]


? Operacin commit
? Una vez se decide instalar la transaccin, se enva un mensaje commit a la Fachada ServidordeIntermediario
BrokerServer.instance().commit();

? El mtodo ServidordeAgente.commit simplemente dirige un mensaje commit a cada intermediario.


void BrokerServer.commit() { for each broker b b.commit() }

Fundamentos de Ingenier a de SW

41

Esquemas, Patrones y Persistencia Operaciones Transaccionales [5]


? En una transaccin los objetos pueden ser creados, modificados y eliminados.
? Suponiendo que se encuentren en la cach del estado correspondiente de la transaccin, el mensaje commit debe cumplir con las siguientes reglas:
? Cach Nueva y Limpia - Insertar en BD, Dirigirse a Cach Vieja y Limpia ? Cach Vieja y Limpia - Ignorar, no han cambiado ? Cach Nueva y Sucia - Insertar en BD, Dirigirse a Cach Vieja y Limpia ? Cach Vieja y Sucia - Actualizar en BD, Dirigirse a Cach Vieja y Limpia ? Cach Nueva Eliminada - Eliminar en cach ? Cach Vieja Eliminada - Eliminar en DB, Eliminar en cach

Fundamentos de Ingenier a de SW

42

21

Esquemas, Patrones y Persistencia Operaciones Transaccionales [6]


? Operacin rollback.
? Una vez decidido someter la transaccin a un rollback, se enva un mensaje rollback a la Fachada ServidordeIntermediario
BrokerServer.instance().rollback ();

? El mtodo ServidordeAgente.rollback simplemente dirige un mensaje rollback a cada intermediario. ? Las reglas del rollback son las siguientes:
? Cach Vieja y Limpia - Ignorar, no han cambiado. ? El resto de las cachs - Eliminar en la cach.

Fundamentos de Ingenier a de SW

43

Esquemas, Patrones y Persistencia Busca de objetos en almac. persistente [1]


? Recuperar un registro a partir de un almacenamiento persistente depende de las herramientas, bibliotecas y del sistema operativo.
? Por ejemplo, en Windows se puede utilizar los servicios del DAO. ? Dentro del esquema se defini el mtodo IntermediariodeEPRelacional.SeleccionarPrimero(consulta) para localizar el primer registro que cumpla con los criterios de la consulta.

? En general, un Intermediario de BD debe ofrecer 2 formas de bsqueda:


? Bsqueda mediante el identificador de objetos. ? Bsqueda mediante criterios arbitrarios, como las clave primaria del dominio, por ejemplo, RUT.

Fundamentos de Ingenier a de SW

44

22

Esquemas, Patrones y Persistencia Busca de objetos en almac. persistente [2]


? Con qu criterio debera recuperarse el objeto raz en una jerarqua de composicin?
? Los objetos raz no pueden materializarse utilizando Agentes Virtuales y realizando una bsqueda con sus identificadores de objeto como clave de consulta.
? Por ejemplo, una instancia Venta y sus instancias asociadas VentasLineadeProductos y sus EspecificacionesdeProductos.

? Las instancias asociadas se materializan utilizando Agentes Virtuales en base al valor de identificador de objetos del raz (Venta), pero cmo se prepara la escena y se introduce en la memoria esta primera instancia de Venta?

Fundamentos de Ingenier a de SW

45

Esquemas, Patrones y Persistencia Busca de objetos en almac. persistente [3]


? Este problema indica la necesidad de contar con capacidad de bsqueda orientada al dominio.
? En el ejemplo se podra utilizar la fecha y hora para buscar una instancia de Venta. IntermediarioRelacionaldeVentas CurrentRecordasObject():Venta() VentaconFechayHora(fecha,hora):Venta()

selectFirst("date = ",fecha,"and time = ",hora) return currentRecordasObject()


Fundamentos de Ingenier a de SW 46

23

Esquemas, Patrones y Persistencia Diseos Alternativos [1]


? Metadatos e Intermediarios parametrizados
? Definir Metadatos (datos acerca de datos) respecto al mapeo de clases y tablas, respecto al mapeo de nombres de atributos y campos, etc. ? Los metadatos se pueden conservar en un objeto.MetadatosdeAlmacenamientoPersistente.
? No es necesario generar una jerarqua de intermedios. ? Por ejemplo, es posible que el IntermediariodeEPRelacional sea una clase instanciada y parametrizada con metadatos.
o No se requieren subclases de IntermediarioEPRelacional.

? Metadatos es un enfoque ms flexible y robusto que el de formacin de subclases.


? Se recomienda en aplicaciones que contengan muchas clases de objetos persistentes.

Fundamentos de Ingenier a de SW

47

Esquemas, Patrones y Persistencia Diseos Alternativos [2]


? Objetos Consulta
? A diferencia de las consultas de cadenas simples (por ejemplo OID=123) es posible crear una clase Consulta cuyas instancias estn parametrizadas con expresiones booleanas. ? Este esquema tiene la ventaja de abstraer de cualquier lenguaje de manipulaci n de datos, p.ej. SQL.

? Cambio de intermediarios y de intermediarios de bases de datos en la memoria.


? Consiste en crear un Intermediario en-la Memoria que no guarde objetos en un almacenamiento persistente cuando se enva la seal de commit . ? Es til durante el desarrollo y las pruebas para evitar la complejidad y desempeo de un intermediario real.

Fundamentos de Ingenier a de SW

48

24

Esquemas, Patrones y Persistencia Diseos Alternativos [3]


? Se puede desconectar un intermediario y conectar otro, sin afectar a los objetos cliente.
? As, se puede utilizar in Intermedio en-la Memoria durante algn periodo y luego reemplazarlo por un intermedio relacional o plano.
Intermediario utilizado en las pruebas

IntermediariodeEP

IntermediariodeEPRelacional

IntermediariodeEPdeArchivos

IntermediariodeEPenMemoria

Fundamentos de Ingenier a de SW

49

Esquemas, Patrones y Persistencia Diseos Alternativos [4]


? Comparacin entre estados de transaccin y cachs mltiples.
? Una forma eficiente de recordar el estado de transaccin de un objeto es colocndolo en una cach de intermediarios, por ej. ViejaLimpia o ViejaSucia. ? Un diseo alterno es donde cada objeto se asocia a un objeto EstadodeTransaccin que indica si es viejo y limpio, viejo y sucio, etc.
? Todos los objetos pueden estar en una cach, y el estado de transaccin del objeto se conoce mediante el objeto asociado de estado y no mediante su pertenencia a la cach.

? No conviene agregar directamente el conocimiento de la persistencia a las definiciones del objeto de dominio.

Fundamentos de Ingenier a de SW

50

25

Esquemas, Patrones y Persistencia Diseos Alternativos [5]


? Se recomienda las siguientes opciones:
? Si se usa una superclase comn ObjetoPersistente, el estado es un atributo definido en esa clase. ? En un Mapa (Dictionary o Hashtable) que conserva el intermediario.
? La clave del Mapa es el objeto, el valor asociado Mapa es el EstadodeTransaccin del objeto.

? Como un atributo del AgenteVirtual


? Este diseo presenta una complicacin: si varios agentes se relacionan con el mismo objeto real, todos ellos debern permanecer sincronizados.

Fundamentos de Ingenier a de SW

51

Esquemas, Patrones y Persistencia Diseos Alternativos [6]

EstadodeTra nsaccion

commit()() rollback()()

EstadoViejoLimpio

EstadoViejoS ucio

commit()() rollback()()

commit()() rollback()()

Fundamentos de Ingenier a de SW

52

26

Esquemas, Patrones y Persistencia Quiz


? Cul es la necesidad real de agentes e intermediarios? ? Cmo el diseo de los agentes e intermediarios da soporte a alta cohesin y bajo acoplamiento? ? Se cumple la arquitectura multicapa?

Fundamentos de Ingenier a de SW

53

27

You might also like