Acceso a Datos
Erick López Ovando
Licenciado en Informática
Primero que nada…
Material disponible en: www.inca.inf.utfsm.cl/~elopez
Cursos Visual C# .Net
Repasemos
Modelo Conceptual
Modelo de Clases
Modelo de Datos
Entidades relacionales, no objetos
La Clase
Una clase es un concepto OO que encapsula las abstracciones de datos y procedimientos que se requieren para describir el contenido y comportamiento de alguna entidad del mundo real (y objetos derivados de una clase)
Clases: colección de objetos similares, los cuales heredan atributos y operaciones disponibles para la manipulación de éstos.
Superclase: colección de clases
Subclase: instancia de una clase
Ingeniería de Software
Ciclo de Vida del Software
Construcción
Ciclo de Desarrollo
Análisis
Artefactos
Diseño
Arquitectura
En los sistemas actuales es necesario guardar información en medios de almacenamiento persistente (Bases de Datos)
¿Cómo guardar objetos en dichos medios?
Se introducirá un esquema de persistencia para enfrentar esta problemática
Objeto persistente: Objeto instanciado en memoria que debe ser almacenado en un medio no volátil por ej., EspecificacionDeProducto
Objetivo: Diseñar un esquema que permita diseñar objetos que den servicios (métodos) a otros objetos para ser almacenados en un medio persistente
Mecanismos de Almacenamiento
Bases de datos Orientadas a Objeto: Presentan la ventaja de no necesitar servicios
específicos de persistencia.
Bases de datos Relacionales: Son las más utilizadas hoy en día. No poseen métodos para almacenamiento de
objetos. Se requieren de servicios especiales para almacenar
objetos en las tablas.
Esquema de Persistencia
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
Esquema de Persistencia
Requerimientos
Un Esquema de Persistencia debería ofrecer los siguientes servicios: Almacenamiento y recuperación de objetos Transacciones del tipo commit y rollback
commit - completar la transacción de guardar rollback - deshacer la transacción, restaurar el estado anterior
El diseño de un EP debe considerar lo siguiente: Extendible para otros medios de almacenamiento Realizar la menor cantidad posible de modificaciones al código
Mapeo
¿Cómo mapear un objeto a un archivo o a un esquema de bases de datos relacional?
El patrón Representación 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 aproximación para tipos primitivos de
datos, pero para tipos complejos, este método no es tan simple
Identidad del Objeto
¿Cómo 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 patrón 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 alfanumérico.
Toda tabla de la base de datos relacional tiene un IDO como clave primaria, el que también está contenido como atributo en el objeto.
Intermediario de la BD
¿Quién es responsable de materializar y desmaterializar los objetos desde un almacenamiento persistente, p.ej. EspecificacionDeProducto?
El patrón Experto señala que debería hacerlo la clase de objeto persistente EspecificacionDeProducto.
No es muy buena solución: Existiría un muy alto acoplamiento. Se pierde la cohesión pues la responsabilidad está fuera del
dominio del objeto.
El patrón “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.
Beans
Una tabla un beans (objeto de “datos”)
Personas
NombreEdad
Class Personas
private string nombre
private int edad
public string Nombre();
public int Edad();
DAO
DAO: clases que implementen los diferentes tipos de funcionalidades a usar en la aplicación.
Ellos son los encargados de establecer la comunicación con la BD.
Personas
NombreEdad
Class Personas
private string nombre
private int edad
public string Nombre();
public int Edad();
Class DAOPersonas
Definimos variables de conexión
public string Nombre();
public int Edad();