31 votos

Dónde está la línea entre el DAL y ORM?

Los términos a menudo se utiliza indistintamente, y claramente hay un solapamiento considerable, pero a menudo parece implicar que la gente vea algo implícito al decir que un sistema es un ORM que no está implícita por tratarse de una DAL. ¿Qué es eso? ¿Cuáles son los puntos clave que diferencian estos tipos de sistema?

Por ejemplo, digamos que tengo algo de código que implementa la Base de datos, Tabla, Columna y Fila de clases, rellenarlas por análisis automático de una base de datos existente, permitiendo la interacción simplificada y así sucesivamente. Se entiende, aplica y toma ventaja de las relaciones estructurales entre la base de datos de entidades, tales como llaves foráneas. Todos la entidad modelos puede ser una subclase de la tabla de carga de funcionalidad específica sobre ellos.

Hasta qué punto es esto un DAL? Hasta qué punto es un ORM? Por qué?

44voto

Steven A. Lowe Puntos 40596

ORM = Mapeo Objeto-Relacional

En un ORM, clases/objetos de la aplicación se asignan a las tablas de base de datos y las operaciones de persistencia, a veces automágicamente.

DAL = Capa de Acceso a Datos

En una DAL, operaciones de base de datos están ocultos detrás de un código de fachada.

Un ORM es un tipo de DAL, pero no todos los DALs son Orm.

7voto

matt b Puntos 73770

Creo que un ORM es capaz de asignación de cualquier conjunto de objetos a una base de datos relacional; mientras que un DAL es específico para su aplicación, y probablemente no podía, naturalmente, ser ampliado para apoyar otros objetos.

No sólo eso, sino que un ORM específicamente se refiere con la asignación de las clases a/a partir de la base de datos de entidades, mientras que un DAL puede ser simplemente una manera para que usted pueda acceder a los datos en una base de datos, sin ninguna asignación.

5voto

Ty. Puntos 2435

Cualquier orientado a objetos DAL conectar a cualquier sistema de almacenamiento que no es guardar objetos implementa un ORM. ORM se entiende generalmente algo como Hibernate, pero lo importante es el manejo de los desajustes de impedancia.

[Ampliado]

En un nivel de datos, los desajustes de impedancia se producen cuando la asignación de los datos de un tipo (relacional) en los datos de otro (OO).

Por ejemplo, ¿cuántas veces has visto una línea como la siguiente en tu DAL?

db.AddInParameter(dbCommand, "Name", DbType.String, name);

O el otro lado

customerId = Convert.ToInt64(dr["CustomerID"].ToString());

Muchos de los problemas vienen cuando la asignación de sus tipos de datos simples.

En un nivel de objeto, su DAL debe devolver las estructuras que va a utilizar. Ser algún tipo de objeto de negocio o simplemente un montón de datos en bruto. Tanto su propio DAL y el ORM se necesita para manejar esto.

En un nivel de diseño, los objetos que se construyen son el reflejo de sus datos almacenados. Así que una diferencia estructural puede ocurrir. Estos también son manejados por usted dentro de las soluciones ORM, pero se verían obligados a hacer lo mismo dentro de un DAL. Por ejemplo, dentro de su OO código sería bueno implementar un adecuado herencia, pero que no encubierta fácilmente en algo relacional.

Yo sólo quería señalar que el ORM es un término acuñado para empujar los productos que automatizan gran parte de lo que ya tiene que hacer dentro de su DAL. El ORM soluciones para hacer la vida más fácil y proporcionan un gran número de calidad/beneficios de rendimiento. Pero eso no cambia el hecho de que uno de los componentes principales de su DAL es la creación de su propio ORM.

3voto

Hector Sosa Jr Puntos 3422

ORM no existía cuando empecé a programar. Cuando la primera Orm salió, eran herramientas externas utilizadas para crear el DAL. Hoy en día, DAL y el ORM se han mezclado. Es por eso que una gran cantidad de desarrolladores utilizar los términos indistintamente.

El más conocido ejemplo de un ORM que funciona como un DAL es Fluent. Otros ejemplos son Subsónicos y CSLA.NET. Estos son todos .Herramientas de redes. Si mal no recuerdo, ORM herramientas se inició en el mundo de Java. Otras tecnologías de pilas, a continuación, copiar lo que Java se ha hecho.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X