NHibernate - ORM

Antes de que podamos realmente comenzar a usar NHibernate, debemos comprender la base sobre la que se construye. NHibernate es una tecnología de persistencia que se basa en la idea de mapeo relacional de objetos u ORM.

¿Qué es ORM?

El mapeo objeto-relacional (ORM) es un programming techniquepara convertir datos entre sistemas de tipos incompatibles en lenguajes de programación orientados a objetos. En otras palabras, es el concepto de mapear los objetos de negocio de una aplicación a las tablas de bases de datos relacionales, de modo que se pueda acceder fácilmente a los datos y actualizarlos por completo a través del modelo de objetos de una aplicación.

  • Como ya sabe, las bases de datos relacionales proporcionan un buen medio para almacenar datos, mientras que la programación orientada a objetos es un buen enfoque para crear aplicaciones complejas.

  • NHibernate y ORM en general son más relevantes para aplicaciones con lógica comercial no trivial, el modelo de dominio y algún tipo de base de datos.

  • Con ORM, es muy fácil crear una capa de traducción que pueda transformar fácilmente objetos en datos relacionales y viceversa.

  • El acrónimo ORM también puede significar modelado de roles de objetos, y este término se inventó antes de que el mapeo relacional / objeto se volviera relevante.

  • Describe un método para el análisis de información, utilizado en el modelado de bases de datos.

¿Por qué ORM?

ORM es un framework que le permite mapear el mundo de objetos que se encuentran en lenguajes orientados a objetos a filas en tablas relacionales que se encuentran en bases de datos relacionales

Para comprender este concepto, echemos un vistazo al siguiente diagrama.

  • En el diagrama anterior, puede ver que tenemos una tabla llamada Empleado en el lado derecho que contiene columnas con cada dato asociado con un empleado individual.

  • Tenemos una columna para una identificación que identifica de forma única a cada empleado.

  • Una columna para el nombre del empleado, otra columna para su fecha de incorporación y, finalmente, una columna que tiene la edad de un empleado.

  • Si quisiéramos escribir algún código para almacenar un nuevo empleado en las tablas, no es tan fácil.

  • En el diagrama anterior, también puede ver que tenemos un objeto de empleado que tiene campos para la identificación, el nombre, la fecha de incorporación y la edad.

  • Sin un ORM, tenemos que traducir este objeto en algunas declaraciones SQL diferentes que insertarán los datos de los empleados en la tabla de empleados.

  • Entonces, escribir código para crear el SQL para hacer el escenario anterior no es tan difícil, pero es un poco tedioso y bastante fácil equivocarse.

  • Usando un ORM como NHibernate, podemos declarar cómo ciertas clases deben mapearse en tablas relacionales y dejar que el ORM o NHibernate se ocupen del desagradable trabajo de crear el SQL para insertar, actualizar, eliminar, en los datos de consulta en nuestra tabla de empleados.

  • Esto nos permite mantener nuestro código enfocado en el uso de objetos y hacer que esos objetos se traduzcan automáticamente a tablas relacionales.

  • Entonces, realmente lo que hace un ORM es que nos ahorra tener que asignar manualmente objetos a tablas.