DAO和DAL有什么区别?

63

在学校里学习Java后,我对DAO模式(数据访问对象)非常熟悉。但是,在工作中,我使用.NET。在.NET中,经常谈论DAL(数据访问层)。对我来说,它们的目的似乎非常相似。那么问题是DAO和DAL基本上是相同的东西吗?是不是只有为了避免与数据访问对象混淆,才出现了术语DAL?


1
我一直认为DAL是数据抽象层。 - davidsleeps
2个回答

101

数据访问层(DAL)是位于业务逻辑层和持久性/存储层之间的系统层。DAL可以是单个类,也可以由多个数据访问对象(DAO)组成。它可能在顶部具有一个外观,供业务层进行交互,隐藏数据访问逻辑的复杂性。它也可能是第三方对象关系映射工具(ORM),如Hibernate。

DAL是一个架构术语,DAO是设计细节。


4
假设我有一个名为DAO的接口,其中包含像getCustomer()这样的方法。这个接口由SqlServerDAO类实现。当调用getCustomer()时,SqlServerDAO从数据库中获取数据,创建并返回Customer对象。在这种情况下,数据访问层(DAL)由DAO接口和SqlServerDAO类组成,对吗? - simoraman
17
+1 表示“DAL 是一个架构术语,DAO 是一个设计细节。” - Salman Virk

20

一个数据访问层将包含许多数据访问对象。

其主要作用是将业务逻辑与数据库逻辑和实现分离。

例如,DAL 可能具有单个方法,该方法将通过一个或多个数据访问对象从几个表、查询或存储过程中检索数据。

对于数据库结构、DAO、存储过程甚至数据库类型的更改,都不应导致业务逻辑的更改,这要归功于 DAL 提供的解耦功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接