VAN - Septiembre 19 de 2009 - Introducción ORM
Formato
Reunión virtual
Duración:
Vídeo Completo: 2:30 horas
Introducción: 00:00:00 a 00:02:33
Encuesta: 00:02:34 a 00:06:45
Desconferencia: 00:06:46 a 01:38:00
Preguntas y debate: 01:38:01 a 02:29:38
Nota: La presentación del tema a cargo de Fabio Maulo comprende 1:37 horas y a partir de ahí continua la sección de preguntas y una discusión interesante respecto a la relación entre desarrolladores y DBAs vista a través de ORM.
Síntesis:
ORM es el acronimo de Object Relational Mapping y es la técnica de programación/diseño para convertir datos entre el sistema de tipos utilizado en lenguajes Object Oriented y el utilizado en un DB relacional.
Introducción a ORM
La situación:
OOP y RDBMS
Los modelos de datos son parciales
Necesitamos una capa de persistencia
Definición de ORM
El problema:
Trasformación de OOP a RDBMS
Identificación de objetos
Consideraciones sobre Keys
Keys involucradas con el negocio
Composite keys
Persistent Object Identifier POID
Estrategias de asignación de POIDs
MAX
Table Key-Values
GUIDs/UUIDs
Mecanismos propietarios
High/Low HILO
Mapping Propiedades a Campos
Mapping Clases a Tablas
Mapping de herencia
Table per class hierarchy
Table per concrete class
Table per class
Ejemplo comparativo de las tres técnicas
Impacto de modificaciones en las tres técnicas
Agregar propiedad
Agregar clase
Agregar propiedad en superclase
Comparación del impacto entre las tres técnicas
Comparación respecto de su utilización
Reporting
Implementación
Acceso a datos
Acoplamiento
Velocidad de acceso a datos
Soporte polimorfismo
Mapping, más clases en una tabla
Mapping de Relaciones
Asociación y Agregación
Implementando relaciones:
One-to-One,
Many-to-One y
Many-to-Many
Many-to-Many con POID
Mismas clases, diferentes relaciones
Concurrencia
Locking Pesimista
Locking Optimista
Implementando Locking Optimista
Where All
Timestamp
Versión incremental
Stored Procedures
Cuando usarlas en un proceso de mapping
Triggers, Cuando usarlos
Capa de persistencia
Qué podemos esperar de un buen persistence layer
Soporte a varios RDBMS
Varios sistemas de generación de POIDs
Varias estrategias de herencia
Manejo de asociaciones y agregaciones
Gestión de concurrencia
Permita crear nuevas aplicaciones sobre un DB existente
Usar Stored Procedures
Usar valores generados por medio de Triggers
Implementación del patrón Unit-of-Work
Acceso inteligente a DB
Uso de Cahe con CachingInvalidation Policies
Soporte a Queries orientadas a objetos y SQL
Limite al Round-Trip, Statement Batching
Dirty Checking
Lazy Loading
Flexible Eager Fetch
Cascading Updates/Deletes
Acceder a datos sin acceder a todo el grafo de la una entidad
Multithreading
CRUD refiriéndose a entidades
Eventos para controlar el ciclo de vida de una entidad
De fácil integración con frameworks de IoC
Undo capability
Dependency ordering
Paging support
Aggregation suppot
Soluciones para ORM
Bases de datos orientadas a objetos
Frameworks de ORM
Data Mappers
Solución propia
Frameworks de ORM
Hibernate
MS Entity Framework
NHibernate
Castle Active Record
Otros .NET
Enlaces:
http://www.agiledata.org/
Video
Si lo prefieren, pueden observar el vídeo en http://www.screencast.com/t/cEUiM975 o descargar el archivo desde este enlace, el cual tiene un tamaño de 358.72 MB.