![]() |
1
52
ORM=对象关系映射在ORM中,应用程序中的类/对象被映射到数据库表和持久化操作,有时是自动的。 dal=数据访问层在DAL中,数据库操作隐藏在代码外观后面。 ORM是一种DAL,但并非所有DAL都是ORM。 |
![]() |
2
7
我认为ORM能够将任何一组对象映射到关系数据库;而DAL是特定于您的应用程序的,可能无法自然地扩展到支持其他对象。 不仅如此,ORM还特别关注 映射 与数据库实体之间的类,而DAL可能只是一种访问数据库中数据的方法,而不需要任何映射。 |
![]() |
3
5
任何面向对象的DAL连接到任何不保存对象的存储系统,都会实现ORM。ORM通常被理解为类似于Hibernate的意思,但重要的是处理阻抗不匹配。 [扩大] 在数据级别,当您将一种类型(关系型)的数据映射到另一种类型(OO)的数据时,会出现阻抗不匹配。 例如,您在DAL中看到过多少次类似下面的线条?
或者另一边
映射原始数据类型时会出现许多问题。 在对象级别,DAL应该返回您打算使用的结构。可能是某种业务对象,也可能只是一堆原始数据。你自己的DAL和ORM都需要处理这个问题。 在设计级别,您构建的对象反映了您存储的数据。因此可能会出现结构差异。这些也在ORM解决方案中为您处理,但您将被迫在DAL中执行相同的操作。例如,在OO代码中实现适当的继承是很好的,但这并不容易转化为关系型的东西。 我只是想指出,ORM是一个专门用来推动产品自动化的术语,在DAL中你已经需要做很多事情。ORM解决方案将使生活更轻松,并提供大量质量/性能优势。但这并不能改变这样一个事实,即DAL的主要组成部分之一就是创建自己的ORM。 |
![]() |
4
3
当我开始编程时,ORM不存在。当第一个窗体出现时,它们是用于创建DAL的外部工具。现在天,达尔和奥姆混在一起了。这就是为什么许多开发人员可以互换使用这些术语的原因。 作为DAL的ORM最著名的例子是NHiberonate。其他例子包括亚音速和csla.net。这些都是.NET工具。IRC,ORM工具开始于Java世界。其他技术栈随后复制了Java所做的事情。 |
![]() |
slik · iOS数据访问层和数据访问层的神奇记录处理 11 年前 |
![]() |
RacerNerd · 如何在DNN 7+中使用DAL2复合密钥? 11 年前 |
|
sakir · 为什么我们要在解决方案中添加解决方案文件夹和责任共享测试文件夹 11 年前 |
![]() |
ZedBee · 把一个软件分成多个模块,每个模块都有自己的数据库,这样更好吗 12 年前 |