¿por que usar orm?
apache openjpa
No pretendo despreciar ninguno de los módulos mencionados en este post. Se ha trabajado mucho en todos y cada uno de ellos. Son utilizados por aplicaciones de producción en todo el mundo que responden alegremente a un montón de peticiones cada día. Yo también he desplegado aplicaciones usando ORMs y no me arrepiento de nada.
El mapeo objeto-relacional es el proceso de mapeo entre objetos y sistemas de bases de datos relacionales. Los diferentes sistemas de bases de datos acceden a los datos de innumerables maneras, y ORM le ayuda a mantener los objetos incluso cuando las fuentes y las aplicaciones a las que acceden cambian con el tiempo. El ORM se utiliza habitualmente para agilizar la migración de datos entre bases de datos.
Los ORM son herramientas poderosas. Los ORMs que examinaremos en este post son capaces de comunicarse con backends SQL como SQLite, PostgreSQL, MySQL y MSSQL. Los ejemplos de este post harán uso de PostgreSQL, que es un servidor SQL de código abierto muy potente. Hay ORMs capaces de comunicarse con backends NoSQL, como el Mongoose ORM respaldado por MongoDB, pero no los consideraremos en este post.
orm c#
Entonces, ¿por qué debería utilizar cualquier herramienta de mapeo O/R (ORM)? No me refiero a una herramienta específica, sino a todas las herramientas ORM en general. Hay una serie de razones para utilizar una herramienta ORM, pero antes de sumergirme en eso, permítanme darles una breve visión general de lo que es realmente una herramienta de mapeo O/R.
Una herramienta de mapeo O/R genera objetos de persistencia para su aplicación .NET. Es una herramienta de modelado y generación de código que se conecta a su base de datos y lee su esquema, luego le permite asignar objetos a tablas y vistas de la base de datos, especificar operaciones de inserción, actualización, carga y eliminación de una sola fila, consultas y llamadas a procedimientos almacenados, como métodos para estos objetos. Además, le permite definir relaciones de uno a uno, de uno a varios, de varios a uno y de varios a varios entre los objetos, basándose en las relaciones entre las tablas de la base de datos. A continuación, genera un código de objetos de persistencia totalmente funcional para usted.
El primer beneficio de un ORM es que le ahorra una tonelada de tiempo de desarrollo (del 20% al 50% de tiempo, dependiendo de su situación). Ahora, la herramienta de mapeo O/R no está generando ningún código de “ciencia espacial” para usted y definitivamente podría hacerlo manualmente si lo desea. Pero, esto es un montón de trabajo tedioso y usted definitivamente sería más feliz si no tuviera que hacerlo usted mismo. Hagamos algunos cálculos sencillos.
orm vs sql python
Anteriormente trabajé en un equipo de análisis en el que gestionábamos cientos de millones de filas de datos. En realidad nunca sumé todo, pero no me sorprendería ver el total por encima de los mil millones de filas. Lo pusimos todo en PostgresSQL y escribimos todas nuestras consultas nosotros mismos.
SQL (Structured Query Language) es un lenguaje específico de programación diseñado para la gestión de datos en un sistema de gestión de bases de datos relacionales o para el procesamiento de flujos en un sistema de gestión de flujos de datos relacionales. Es especialmente útil para manejar datos estructurados, es decir, datos que incorporan relaciones entre entidades y variables.
Para explicarlo de forma aún más sencilla, es el lenguaje que se utiliza para trabajar con los datos en las bases de datos. Como nos enseña la wikipedia, actúa de forma diferente según la base de datos con la que se utilice (…lenguaje específico del dominio…). Algunos aspectos del lenguaje cambian dependiendo de si se trabaja con PostgrsSQL u Oracle.
ORM significa Object-Relational-Mapper. Son herramientas diseñadas para abstraer el dolor de aprender a escribir SQL permitiéndole escribir en su lenguaje preferido. Por ejemplo, eche un vistazo a esta sentencia SQL:
hibernate
La razón más importante para usar un ORM es para poder tener un modelo de negocio rico y orientado a objetos y ser capaz de almacenarlo y escribir consultas efectivas rápidamente contra una base de datos relacional. Desde mi punto de vista, no veo ninguna ventaja real que un buen ORM te dé en comparación con otras DAL generadas, aparte de los tipos avanzados de consultas que puedes escribir.
Un tipo de consulta en el que estoy pensando es una consulta polimórfica. Una simple consulta ORM podría seleccionar todas las formas en su base de datos. Usted obtiene una colección de formas de vuelta. Pero cada instancia es un cuadrado, un círculo o un rectángulo según su discriminador.
Otro tipo de consulta sería la que obtiene un objeto y uno o más objetos o colecciones relacionados en una sola llamada a la base de datos, por ejemplo, cada objeto de forma se devuelve con sus colecciones de vértices y lados.
Siento no estar de acuerdo con tantos otros aquí, pero no creo que la generación de código sea una razón suficiente por sí misma para ir con un ORM. Puedes escribir o encontrar muchas buenas plantillas DAL para generadores de código que no tienen la sobrecarga conceptual o de rendimiento que tienen los ORM.