Saltar la navegación

1.- Concepto de Mapeo objeto-relacional.

Caso práctico

María percibe que sus aplicaciones, basadas en Programación Orientada a Objetos, no son almacenables de forma directa en los Sistemas Gestores de Bases de Datos que tienen en la empresa. ¿Cómo guardar un objeto en un sistema de almacenamiento basado en tablas?

Imagen de María, una de las protagonistas de nuestros casos prácticos.

A la hora de almacenar los datos de un programa orientado a objetos en una base de datos relacional, surge un inconveniente debido a incompatibilidad de sistemas de tipos de datos. En el software orientado a objetos, la información se representa como clases y objetos. En las bases de datos relacionales, como tablas y sus restricciones. Por tanto, para almacenar la información tratada en un programa orientado a objetos en una base de datos relacional es necesaria una traducción entre ambas formas.

El mapeo objeto-relacional (ORM) soluciona este problema. Es una técnica de programación que se utiliza con el propósito de convertir datos entre el utilizado en un lenguaje de programación orientado a objetos y el utilizado en una base de datos relacional, gracias a la persistencia. Esto posibilita el uso en las bases de datos relacionales de las características propias de la programación orientada a objetos (básicamente  herencia y polimorfismo).

Una base de datos relacional es una colección de elementos de datos organizados en un conjunto de tablas formalmente descritas desde la que se puede acceder a los datos o volver a montarlos de muchas maneras diferentes sin tener que reorganizar las tablas de la base.

Tipos de datos: caracteres, numéricos, fecha y hora, binarios y rowid.

Mapeo Objeto Relacional

La persistencia de objetos es la capacidad que tienen los objetos de sobrevivir al proceso que los creó; permitiendo al programador almacenar, transferir, y recuperar el estado de los objetos.

Es el mecanismo por el cual una clase permite heredar las características (atributos y métodos) de otra clase.

El polimorfismo se refiere a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos.

La mayoría de las aplicaciones se construyen usando técnicas de programación orientada a objetos; sin embargo, los sistemas de bases de datos más extendidos son de tipo relacional.

Las bases de datos más extendidas son del tipo relacional y estas sólo permiten guardar tipos de datos primitivos (enteros, cadenas de texto, etc.) por lo que no se puede guardar de forma directa los objetos de la aplicación en las tablas. Por tanto, se debe convertir los valores de los objetos en valores simples que puedan ser almacenados en una base de datos (y poder recuperarlos más tarde).

El mapeo objeto-relacional surge, pues, para dar respuesta a esta problemática: traducir los objetos a formas que puedan ser almacenadas en bases de datos preservando las propiedades de los objetos y sus relaciones; estos objetos se dice entonces que son persistentes.

Esquema formado por varias figuras, tal y como se detallan a continuación: a la izquierda, un cilindro bajo el título “APLICACIONES”  en cuyo interior se puede leer “OBJETOS”. De él salen dos flechas hacia la derecha, una más alta que la otra. La flecha más alta está tachada con una cruz roja y acompañada por la frase “NO ALMACENAMIENTO” y se dirige hacia un rectángulo en cuyo interior se puede leer “TIPOS DE DATOS PRIMITIVOS”. La flecha más baja va acompañada por la palabra “ORM” y se dirige hacia un cilindro en cuyo interior se puede leer “TIPOS DE DATOS DE OBJETOS (PERSISTENTES)”. Esta zona de la derecha está bajo el título “BASES DE DATOS RELACIONALES”.

El ORM se encarga, de forma automática, de convertir los den objetos y registros y viceversa, simulando así tener una base de datos orientada a objetos.

Entidad existente en la memoria del ordenador que tiene unas propiedades (atributos o datos sobre sí mismo almacenados por el objeto) y unas operaciones disponibles específicas (métodos).

Un registro (también llamado fila o tupla) representa un objeto único de datos implícitamente estructurados en una tabla.

Para saber más

En el siguiente enlace encontrarás un documento muy interesante sobre la problemática asociada al almacenamiento de objetos y al concepto de mapeo objeto-relacional.