Mapeo objeto-relacional


El mapeo relacional de objetos ( ORM , O/RM y herramienta de mapeo O/R ) en informática es una técnica de programación para convertir datos entre sistemas de tipos incompatibles utilizando lenguajes de programación orientados a objetos. Esto crea, en efecto, una " base de datos de objetos virtuales " que se puede utilizar desde dentro del lenguaje de programación. Hay paquetes gratuitos y comerciales disponibles que realizan el mapeo relacional de objetos, aunque algunos programadores optan por construir sus propias herramientas ORM.

En la programación orientada a objetos , las tareas de gestión de datos actúan sobre objetos que casi siempre son valores no escalares . Por ejemplo, considere una entrada de la libreta de direcciones que represente a una sola persona junto con cero o más números de teléfono y cero o más direcciones. Esto podría modelarse en una implementación orientada a objetos mediante un " objeto de persona " con un atributo/campopara contener cada elemento de datos que comprende la entrada: el nombre de la persona, una lista de números de teléfono y una lista de direcciones. La lista de números de teléfono contendría "objetos PhoneNumber" y así sucesivamente. El lenguaje de programación trata cada entrada de la libreta de direcciones como un único objeto (por ejemplo, se puede hacer referencia a ella mediante una sola variable que contenga un puntero al objeto). Se pueden asociar varios métodos con el objeto, como métodos para devolver el número de teléfono preferido, la dirección particular, etc.

Por el contrario, muchos productos de bases de datos populares, como los sistemas de administración de bases de datos SQL (DBMS), no están orientados a objetos y solo pueden almacenar y manipular valores escalares , como números enteros y cadenas organizadas dentro de tablas . El programador debe convertir los valores del objeto en grupos de valores más simples para almacenarlos en la base de datos (y volver a convertirlos al recuperarlos) o usar solo valores escalares simples dentro del programa. El mapeo objeto-relacional implementa el primer enfoque. [1]

El corazón del problema consiste en traducir la representación lógica de los objetos en una forma atomizada que se pueda almacenar en la base de datos mientras se preservan las propiedades de los objetos y sus relaciones para que puedan recargarse como objetos cuando sea necesario. Si se implementa esta funcionalidad de almacenamiento y recuperación, se dice que los objetos son persistentes . [1]

Los detalles específicos de la implementación de los controladores de almacenamiento generalmente se envuelven en una API en el lenguaje de programación en uso, exponiendo métodos para interactuar con el medio de almacenamiento de una manera que es más simple y más en línea con los paradigmas del código circundante.

El siguiente es un ejemplo simple, escrito en código C# , para ejecutar una consulta escrita en SQL utilizando un motor de base de datos.