6
25/04/2014 1 DCIC - UNS Lic. Ariel Trellini Clase 5 Desarrollo de Aplicaciones Empresariales 101 Lic. Ariel Trellini • DCIC • UNS Mapeando a Bases de Datos Relacionales Patrones de Diseño Empresariales Presentación Dominio Acceso a Datos ¿Cómo se puede resolver el “impedance mismatch” impedance mismatch (desajuste por impedancia) entre modelo de objetos y modelo relacional? Existen distintos tipos de patrones que consideran la problemática de la persistencia de datos: Patrones Arquitectónicos Patrones de Comportamiento Objeto-Relacional Patrones Estructurales Objeto-Relacional Patrones de Mapeo de Metadatos Objeto-Relacional Desarrollo de Aplicaciones Empresariales 102 Lic. Ariel Trellini • DCIC • UNS Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Tipo de Patrón Objetivo Patrones Patrones Arquitectónicos ¿Cómo la lógica de dominio se comunica con la base de datos? Table Data Gateway Row Data Gateway Active Record Data Mapper Patrones de Comportamiento Objeto-Relacional ¿Cómo realizar el manejo de los objetos (cargarlos/guardarlos)? Unit Of Work Identity Map Lazy Load Patrones Estructurales Objeto-Relacional ¿Cómo mapear los conceptos de la OO a la base de datos relacional? Identity Field Foreing Key Mapping Association Table Mapping Dependent Mapping Embedded Value Serialized LOB Inheritance Patterns… Inheritance Mapper Patrones de Mapeo de Metadatos Objeto-Relacional ¿Cómo definir declarativamente el mapeo objeto-relacional y encapsularlo, proponiendo una interfaz orientada a objetos? Metadata Mapping Query Object Repository Presentación Dominio Acceso a Datos Desarrollo de Aplicaciones Empresariales 103 Lic. Ariel Trellini • DCIC • UNS PATRONES ARQUITECTONICOS Table Data Gateway Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Un objeto que actúa como Gateway a una tabla de base de datos. Una instancia maneja todas las filas en la tabla. Presentación Dominio Acceso a Datos Desarrollo de Aplicaciones Empresariales 104 Lic. Ariel Trellini • DCIC • UNS ¿Cómo Trabaja? Características: Su interfaz consiste de: Métodos find para obtener información desde la BD Métodos de actualización: insert, update, delete Cada método ejecuta una sentencia SQL de acuerdo a sus parámetros. Generalmente es stateless, ya que su rol es transferir datos entre el dominio y la BD. En las consultas, siempre retorna un conjunto de datos: Map, RecordSet, DTOs Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Table Data Gateway Presentación Dominio Acceso a Datos Desarrollo de Aplicaciones Empresariales 105 Lic. Ariel Trellini • DCIC • UNS ¿Cuándo Utilizarlo? Dado que su implementación es muy sencilla, sería apropiado para aplicaciones muy pequeñas que no cuentan con una lógica de acceso a datos compleja. Si se ha decidido utilizar Table Modules para resolver la lógica de domino. Table Data Gateway es el mejor socio para estos casos, ya que produce los record sets que requiere un Table Module. También es apropiado para Transaction Scripts, siempre y cuando el result set sea conveniente para el Transaction Script. La misma interfaz sirve para utilizar sentencias SQL directas o stored procedures. El resto de los casos. Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Table Data Gateway Presentación Dominio Acceso a Datos

PowerPoint Presentationmfalappa/dae/downloads/Clases/Clase-05.pdf · Presentación Dominio Acceso a Datos Mostrar ejemplos de mapeos: DAO c/SP, Entity Fwk, NHibernate XML, Anotaciones

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PowerPoint Presentationmfalappa/dae/downloads/Clases/Clase-05.pdf · Presentación Dominio Acceso a Datos Mostrar ejemplos de mapeos: DAO c/SP, Entity Fwk, NHibernate XML, Anotaciones

25/04/2014

1

DCIC - UNSLic. Ariel Trellini

Clase 5

Desarrollo de Aplicaciones Empresariales • 101 Lic. Ariel Trellini • DCIC • UNS

Mapeando a Bases de Datos Relacionales

Patrones de Diseño Empresariales

Presentación

Dominio

Acceso a Datos

¿Cómo se puede resolver el “impedancemismatch” impedance mismatch (desajuste por impedancia) entre modelo de objetos y modelo relacional?

Existen distintos tipos de patrones que consideran la problemática de la persistencia de datos:

Patrones Arquitectónicos

Patrones de Comportamiento Objeto-Relacional

Patrones Estructurales Objeto-Relacional

Patrones de Mapeo de Metadatos Objeto-Relacional

Desarrollo de Aplicaciones Empresariales • 102 Lic. Ariel Trellini • DCIC • UNS

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales

Tipo de Patrón Objetivo Patrones

Patrones Arquitectónicos

¿Cómo la lógica de dominio se comunica con la base de datos?

Table Data GatewayRow Data GatewayActive RecordData Mapper

Patrones de Comportamiento Objeto-Relacional

¿Cómo realizar el manejo de los objetos (cargarlos/guardarlos)?

Unit Of WorkIdentity MapLazy Load

Patrones Estructurales Objeto-Relacional

¿Cómo mapear los conceptos de la OO a la base de datos relacional?

Identity FieldForeing Key MappingAssociation Table MappingDependent MappingEmbedded ValueSerialized LOBInheritance Patterns…Inheritance Mapper

Patrones de Mapeo de Metadatos Objeto-Relacional

¿Cómo definir declarativamente el mapeo objeto-relacional y encapsularlo, proponiendo una interfaz orientada a objetos?

Metadata MappingQuery ObjectRepository

Presentación

Dominio

Acceso a Datos

Desarrollo de Aplicaciones Empresariales • 103 Lic. Ariel Trellini • DCIC • UNS

PATRONES ARQUITECTONICOS

Table Data Gateway

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales

Un objeto que actúa como Gateway a una tabla de base de datos.

Una instancia maneja todas las filas en la tabla.

Presentación

Dominio

Acceso a Datos

Desarrollo de Aplicaciones Empresariales • 104 Lic. Ariel Trellini • DCIC • UNS

¿Cómo Trabaja?

Características: Su interfaz consiste de:

Métodos find para obtener información desde la BD

Métodos de actualización: insert, update, delete

Cada método ejecuta una sentencia SQL de acuerdo a sus parámetros.

Generalmente es stateless, ya que su rol es transferir datos entre el dominio y la BD.

En las consultas, siempre retorna un conjunto de datos: Map, RecordSet, DTOs

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Table Data Gateway

Presentación

Dominio

Acceso a Datos

Desarrollo de Aplicaciones Empresariales • 105 Lic. Ariel Trellini • DCIC • UNS

¿Cuándo Utilizarlo?

Dado que su implementación es muy sencilla, sería apropiado para aplicaciones muy pequeñas que no cuentan con una lógica de acceso a datos compleja.

Si se ha decidido utilizar Table Modules para resolver la lógica de domino. Table Data Gateway es el mejor socio para estos casos, ya que produce los record sets que requiere un Table Module.

También es apropiado para Transaction Scripts, siempre y cuando el resultset sea conveniente para el Transaction Script.

La misma interfaz sirve para utilizar sentencias SQL directas o storedprocedures.

El resto de los casos.

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Table Data Gateway

Presentación

Dominio

Acceso a Datos

Page 2: PowerPoint Presentationmfalappa/dae/downloads/Clases/Clase-05.pdf · Presentación Dominio Acceso a Datos Mostrar ejemplos de mapeos: DAO c/SP, Entity Fwk, NHibernate XML, Anotaciones

25/04/2014

2

Desarrollo de Aplicaciones Empresariales • 106 Lic. Ariel Trellini • DCIC • UNS

Row Data Gateway

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales

Un objeto que actúa como Gateway a un único registro en una

tabla de base de datos. Hay una instancia por fila.

Presentación

Dominio

Acceso a Datos

Un Row Data Gateway permite obtener objetos que lucen como los registros de una tabla, pero pueden ser accedidos a través de las facilidades del lenguaje de programación utilizado. De esta manera, se encapsula toda la lógica específica (generalmente SQL) de acceso a datos dentro del gateway.

Desarrollo de Aplicaciones Empresariales • 107 Lic. Ariel Trellini • DCIC • UNS

¿Cómo Trabaja?

Imita exactamente un registro de la base de datos, de manera tal que cada columna de la tabla es un campo del objeto.

Realiza todas las conversiones necesarias entre los tipos de datos de la base de datos y los tipos del lenguaje de programación.

Trabaja particularmente bien con Transaction Script.

Métodos de búsqueda:

Métodos estáticos.

Objetos de búsqueda (buscadores).

¿Cuál es diferencia entre Row Data Gateway y Active Record? La clave está en si existe lógica de dominio en estos objetos.

Row Data Gateway Sin lógica de dominio

Active Record Con lógica de dominio

Si bien es bastante tedioso de escribir, es muy utilizado por los generadores de código basados en Metadata Mapping.

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Row Data Gateway

Presentación

Dominio

Acceso a Datos

Desarrollo de Aplicaciones Empresariales • 108 Lic. Ariel Trellini • DCIC • UNS

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Row Data Gateway

Funcionamiento del Row Data gateway

Desarrollo de Aplicaciones Empresariales • 109 Lic. Ariel Trellini • DCIC • UNS

¿Cuándo Utilizarlo?

Principalmente, cuando se usa Transaction Script. Así, se factoriza el código de acceso a los datos y se lo reutiliza entre distintos scripts.

No sería conveniente utilizarlo en conjunto con Domain Model. Opciones:

• Si el mapeo es simple, usar Active Record.

• Si el mapeo es más complejo, usar Data Mapper.

• Si se utiliza para aislar a los objetos de domino de la estructura de base de datos, se tendrán 3 representaciones de los datos: una en los objetos de dominio, una en los Row Data Gateways y una en la base de datos.

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Row Data Gateway

Presentación

Dominio

Acceso a Datos

Desarrollo de Aplicaciones Empresariales • 110 Lic. Ariel Trellini • DCIC • UNS

Active Record

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales

Un objeto que wrappea una fila de una tabla de la base de datos,

encapsula la lógica de acceso a datos y agrega lógica de dominio

sobre aquellos datos.

Presentación

Dominio

Acceso a Datos

Active Record utiliza la opción más obvia: pone la lógica de acceso a datos en el objeto de dominio. De esta manera, todos los objetos de dominio conocen como guardar y leer sus datos.

Desarrollo de Aplicaciones Empresariales • 111 Lic. Ariel Trellini • DCIC • UNS

¿Cómo Trabaja?

La esencia de un Active Record es un Domain Model en el cual las clases se corresponden bastante con la estructura de tablas de la base de datos subyacente.

Cada Active Record es responsable tanto de guardarse y cargarse en/desde la base de datos, como de cualquier lógica de dominio que actúe sobre los datos.

Típicamente tiene métodos para:

Construir una instancia del Active Record a partir de una fila de un result set SQL.

Construir una nueva instancia que luego será insertada en la base de datos.

Métodos de búsqueda estáticos para factorizar queries SQL repetitivas y retornar instancias del Active Record.

Insertar y actualizar los datos del Active Record en la base de datos.

Obtener y asignar valores a los campos del Active Record.

Implementar algunas partes de la lógica de negocio.

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Active Record

Presentación

Dominio

Acceso a Datos

Page 3: PowerPoint Presentationmfalappa/dae/downloads/Clases/Clase-05.pdf · Presentación Dominio Acceso a Datos Mostrar ejemplos de mapeos: DAO c/SP, Entity Fwk, NHibernate XML, Anotaciones

25/04/2014

3

Desarrollo de Aplicaciones Empresariales • 112 Lic. Ariel Trellini • DCIC • UNS

¿Cómo Trabaja? (Cont)

Los métodos get y set pueden realizar otras funciones como, por ejemplo, convertir tipos orientados a SQL a tipos propios del lenguaje de programación.

Se diferencia de Row Data Gateway en que Active Record contiene lógica de negocio.

Puede utilizar métodos de búsqueda estáticos o puede utilizar objetos de búsqueda (finders).

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Active Record

Presentación

Dominio

Acceso a Datos

Desarrollo de Aplicaciones Empresariales • 113 Lic. Ariel Trellini • DCIC • UNS

¿Cuándo Utilizarlo?

Es una buena elección para la lógica de dominio que no sea demasidocompleja, tales como operaciones CRUD. Validaciones basadas en los datos de un único registro también funcionan bien.

Tiene la ventaja de la simplicidad comparado con Data Mapper.

Funcionan bien solamente si los objetos Active Record se corresponden directamente con las tablas de la base de datos.

Es un buen patrón a considerar si se está usando Transaction Script y se comienzan a sufrir sus desventajas (duplicación de código, mantenimiento, etc).

Si la lógica de dominio es más compleja, se querrán usar relaciones directas a objetos, colecciones, herencia, etc; cosas que no son fáciles de resolver con Active Record.

Acopla el diseño de objetos al diseño de base de datos.

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Active Record

Presentación

Dominio

Acceso a Datos

Desarrollo de Aplicaciones Empresariales • 114 Lic. Ariel Trellini • DCIC • UNS

Data Mapper

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales

Una capa de Mappers que mueven datos entre los objetos y la

base de datos manteniéndolos independientes unos de otros y del

mapper en sí mismo.

Presentación

Dominio

Acceso a Datos

Los Data Mappers separan los objetos en memoria de la base de datos. Son responsables de transferir los datos entre ambos y de mantenerlos aislados uno de otro.

Desarrollo de Aplicaciones Empresariales • 115 Lic. Ariel Trellini • DCIC • UNS

¿Cómo Trabaja?

Hay muchas formas de construir una capa de Data Mappers. Sin embargo, veremos ejemplos sencillos para entender la idea.

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Data Mapper

Presentación

Dominio

Acceso a Datos

Recuperar datos de una base de datos.

Desarrollo de Aplicaciones Empresariales • 116 Lic. Ariel Trellini • DCIC • UNS

Cantidad de Mappers

Hardcoded: Uno por cada clase de dominio o raíz de un agregado.

Metadata Mapping: Unico mapper para todas las clases. Finders agrupados por clase de dominio.

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Data Mapper

Presentación

Dominio

Acceso a Datos

Actualizando datos

Desarrollo de Aplicaciones Empresariales • 117 Lic. Ariel Trellini • DCIC • UNS

Identidad de los objetos

Es necesario que exista en todo momento una única representación en memoria de un objeto de domino, identificada por su identidad.

Hay dos opciones:

Registry de Identity Maps

Cada clase finder mantenga su propio Identity Map, asegurando que habrá solamente una clase finder por cada entidad de negocio.

Manejo de Finders

Varias veces una clase de dominio necesita acceder a un finder de otra clase de dominio

Nunca agregar una dependencia desde un objeto de dominio al Data Mapper.

Utilizar Separated Interface, creando una interfaz con todos los métodos findersrequeridos por la clase de domino y ubicándola en el paquete de dominio.

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Data Mapper

Presentación

Dominio

Acceso a Datos

Page 4: PowerPoint Presentationmfalappa/dae/downloads/Clases/Clase-05.pdf · Presentación Dominio Acceso a Datos Mostrar ejemplos de mapeos: DAO c/SP, Entity Fwk, NHibernate XML, Anotaciones

25/04/2014

4

Desarrollo de Aplicaciones Empresariales • 118 Lic. Ariel Trellini • DCIC • UNS

Mapear Datos a Propiedades del Dominio

Los mappers necesitan acceder a las variables de instancia de los objetos de dominio. Esto sería un problema ya que debiéramos exponer miembros públicos para los mappers, aun si no queremos que formen parte de la lógica de domino.

Algunas soluciones

Poner los mappers cerca de los objetos de dominio para sacar provecho de alguna regla de visibilidad del lenguaje de programación.

Usar Reflection.

Utilizar métodos especiales, nombrados con alguna convención que permita identificarlos.

Constructores

Constructor Rico

Permite crear una instancia bien formada.

Permite propiedades inmutables reales.

Cuidado con las referencias cíclicas.

Constructor Vacío:

Crea una instancia vacía que luego será completada con datos.

Permite resolver las referencias cíclicas con ayuda del Identity Map

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Data Mapper

Presentación

Dominio

Acceso a Datos

Desarrollo de Aplicaciones Empresariales • 119 Lic. Ariel Trellini • DCIC • UNS

Mapeos Basados en Metadatos

Código explícito

Implica tener un mapper por cada objeto de negocio.

El mapeo se realiza a través de asignaciones y sentencias SQL que mantiene internamente

Metadata Mapping

Mantiene la metadata de mapeo como datos, ya sea en la misma clase de dominio o en una clase separada.

Existen distintas variantes para metadatas: XML, atributos/anotaciones, fluentinterfaces, modelos graficos.

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Data Mapper

Presentación

Dominio

Acceso a Datos

Mostrar ejemplos de mapeos: DAO c/SP, Entity Fwk, NHibernateXML, Anotaciones JPA, Fluent NH

Desarrollo de Aplicaciones Empresariales • 120 Lic. Ariel Trellini • DCIC • UNS

¿Cuándo Utilizarlo?

Cuando queremos que el esquema de base de datos y el modelo de dominio evolucionen independientemente

Cuando utilizamos Domain Model. Si bien se podría utilizar Active Record, cuando las cosas se ponen más complejas, Data Mapper toma ventaja.

Si se tiene un modelo de negocio simple.

Si no se quiere pagar el costo de una capa extra.

Si hay que construirlo desde cero.

Patrones de Diseño Empresariales Mapeando a Bases de Datos Relacionales Data Mapper

Presentación

Dominio

Acceso a Datos

Un data mapper es un monstruo complicado de construir.

Hay productos que ya resuelven la problemática, están

testeados e implementan muchos de los patrones vistos.

Desarrollo de Aplicaciones Empresariales • 121 Lic. Ariel Trellini • DCIC • UNS

¿Cómo trabaja? Cuando se comienza a trabajar con la BD, se crea un UoW

UoW mantiene registro de todos los objetos creados / modificados / eliminados durante la transacción de negocio.

Al finalizar la transacción de negocio, el UoW decide qué hacer:

Abrir una transacción de BD

Realizar chequeos de concurrencia (optimista)

Escribir cambios a la BD en el orden apropiado

Cerrar la transacción de BD

Patrones de Diseño Empresariales Mapeando a BD Relacionales Patrones de Comport. Objeto-Relacional

PATRONES DE COMPORTAMIENTO OBJETO-RELACIONAL

Unit Of Work

Presentación

Dominio

Acceso a Datos

Mantiene una lista de objetos afectados por una transacción de

negocio y coordina la escritura de los cambios y la resolución de

problemas de concurrencia.

Desarrollo de Aplicaciones Empresariales • 122 Lic. Ariel Trellini • DCIC • UNS

¿Cómo utilizarlo? Ya viene implementado en muchos ORMs:

Hibernate Session

Entity Framework Context

etc.

Construirlo desde cero es factible, aunque requeriría bastante esfuerzo.

Muchas veces se encapsula (wrappea) el UoW provisto por el ORM

Para evitar tener referencias al ORM en la capa de negocios/aplicación

Para extenderlo con el fin de agregarle features

Manejo de transacciones distribuidas (múltiples BDs)

Logging

Realizar acciones luego del cierre de la transacción de BD.

Patrones de Diseño Empresariales Mapeando a BD Relacionales Patrones de Comport. Objeto-Relacional

Presentación

Dominio

Acceso a Datos

Desarrollo de Aplicaciones Empresariales • 123 Lic. Ariel Trellini • DCIC • UNS

¿Cómo trabaja? Mantiene registro de todos los objetos que han sido leídos desde la BD en

una única transacción de negocio.

Cuando se quiere obtener un objeto, primero se busca en el map por si ya está. Si no está, se busca en la BD y se lo incorpora al map.

Si se utiliza el concepto de Unit Of Work, entonces el UoW es el mejor lugar para el Identity Map.

También sirve como caché de los objetos obtenidos en una transacción de negocio.

Patrones de Diseño Empresariales Mapeando a BD Relacionales Patrones de Comport. Objeto-Relacional

Identity Map Presentación

Dominio

Acceso a Datos

Asegura que cada objeto sea cargado solamente una vez,

manteniendo cada objeto cargado en un map. Busca objetos a

través del map cuando se los referencia.

Page 5: PowerPoint Presentationmfalappa/dae/downloads/Clases/Clase-05.pdf · Presentación Dominio Acceso a Datos Mostrar ejemplos de mapeos: DAO c/SP, Entity Fwk, NHibernate XML, Anotaciones

25/04/2014

5

Desarrollo de Aplicaciones Empresariales • 124 Lic. Ariel Trellini • DCIC • UNS

¿Cómo trabaja? Lazy Load interrumpe el proceso de carga de objetos relacionados al objeto

que se quiere recuperar, dejando una marca en la estructura de objetos tal que si el dato es necesario, pueda ser cargado solamente cuando sea usado.

Alternativas de implementación: Lazy initialization, Virtual proxy, Valueholder, Ghost

¿Cuándo utilizarlo? Actualmente lo proveen por defecto muchos ORMs.

Balancear la información que se recupera en un acceso versus la cantidad de accesos que se requerirán para recuperar la información necesaria.

Principalmente se utiliza para colecciones de objetos relacionados.

Cuidado con el problema del N+1 !

Patrones de Diseño Empresariales Mapeando a BD Relacionales Patrones de Comport. Objeto-Relacional

Lazy Load Presentación

Dominio

Acceso a Datos

Un objeto que no contiene todos los datos que necesitas, pero

sabe cómo obtenerlos.

Desarrollo de Aplicaciones Empresariales • 125 Lic. Ariel Trellini • DCIC • UNS

¿Cómo trabaja? Elegir la clave

Claves con o sin sentido

Meaningful key: Por ejemplo, el número de documento de una persona

Meaningless key: Número aleatorio que no sería utilizado por humanos.

Claves simples o compuestas

Clave simple: Solamente usa un campo de la base de datos.

Clave compuesta: Usa más de un campo de la base de datos.

Alcance de unicidad de las claves

Únicas por tabla

Únicas por base de datos

Patrones de Diseño Empresariales Mapeando a BD Relacionales Patrones Estructurales Objeto-Relacional

PATRONES ESTRUCTURALES OBJETO-RELACIONAL

Identity Field

Presentación

Dominio

Acceso a Datos

Guarda el campo ID de la base de datos en el objeto para

mantener la identidad entre un objeto en memoria y la fila de la

base de datos

Desarrollo de Aplicaciones Empresariales • 126 Lic. Ariel Trellini • DCIC • UNS

¿Cómo trabaja? Elegir la clave (cont.)

Tipo y tamaño

Las operaciones más frecuentes son: igualdad y siguiente clave

Pueden tener efecto en la performance e índices de las BDs.

Generalmente se utilizan: long, GUID e int.

Representar el Identity Field en un objeto

La forma más simple de Identity Field es un campo que concuerde con el tipo de la clave en la BD

Para las claves compuestas, generalmente se utiliza una clase que las representa.

Muchas veces se factoriza la definición de la clave (junto con la operación de igualdad) en una clase de entidad base y ese comportamiento es heredado por todas las entidades del sistema.

Obtener una nueva clave

Delegar en la BD y que la auto-genere

Usar un GUID

Generar propias (max function, tabla de claves separada)

Patrones de Diseño Empresariales Mapeando a BD Relacionales Patrones Estructurales Objeto-Relacional

Presentación

Dominio

Acceso a Datos

Desarrollo de Aplicaciones Empresariales • 127 Lic. Ariel Trellini • DCIC • UNS

¿Cómo trabaja?

Patrones de Diseño Empresariales Mapeando a BD Relacionales Patrones Estructurales Objeto-Relacional

Foreign Key Mapping Presentación

Dominio

Acceso a Datos

Mapea una asociación entre objetos a una foreing key entre tablas

Mapeando una referencia Mapeando una colección

Desarrollo de Aplicaciones Empresariales • 128 Lic. Ariel Trellini • DCIC • UNS

¿Cómo trabaja?

Patrones de Diseño Empresariales Mapeando a BD Relacionales Patrones Estructurales Objeto-Relacional

Association Table Mapping Presentación

Dominio

Acceso a Datos

Guarda una asociación con una tabla con foreign keys a las tablas

que están linkedas por la asociación.

Desarrollo de Aplicaciones Empresariales • 129 Lic. Ariel Trellini • DCIC • UNS

¿Cómo trabaja? El objeto dependiente:

Sólo tiene un owner

No puede haber referencias a él desde otro objeto que no sea su owner

No tiene un Identity Field

No es almacedo en el IdentityMap

No puede ser buscado directamente.

Sólo es accedido desde su owner

Generalmente es un Value Object

Patrones de Diseño Empresariales Mapeando a BD Relacionales Patrones Estructurales Objeto-Relacional

Dependent Mapping Presentación

Dominio

Acceso a Datos

Una clase tiene que realizar el mapeo de BD para una clase hija

Page 6: PowerPoint Presentationmfalappa/dae/downloads/Clases/Clase-05.pdf · Presentación Dominio Acceso a Datos Mostrar ejemplos de mapeos: DAO c/SP, Entity Fwk, NHibernate XML, Anotaciones

25/04/2014

6

Desarrollo de Aplicaciones Empresariales • 130 Lic. Ariel Trellini • DCIC • UNS

¿Cómo trabaja?

Patrones de Diseño Empresariales Mapeando a BD Relacionales Patrones Estructurales Objeto-Relacional

Embedded Value Presentación

Dominio

Acceso a Datos

Mapea un objeto en varios campos de la tabla de otro objeto

Desarrollo de Aplicaciones Empresariales • 131 Lic. Ariel Trellini • DCIC • UNS

¿Cómo trabaja? Tipos de serialización:

BLOB: Binary LOB

CLOB: Textual characters LOB

Se diferencia con EmbeddedValue en que está orientado estructuras de objetos más complejas.

Patrones de Diseño Empresariales Mapeando a BD Relacionales Patrones Estructurales Objeto-Relacional

Serialized LOB Presentación

Dominio

Acceso a Datos

Guarda un grafo de objetos serializándolos en un único objeto

grande (LOB), el cual se almacena en un campo de la BD.