34

Spring框架中的DAO和Service层到底是什么?

我正在寻找理论上的答案。

4

4 回答 4

65

就 Spring 而言,没有区别。按照惯例,您可以使用 . 标记 DAO 类@Repository和使用@Service. 前者也做了一些持久层异常翻译。

既然您在理论上问:DAO 应该执行原始数据库操作并将它们转换为一些更高级别的构造(对象、集合)。服务应该调用 DAO 并执行业务操作。通常,事务划分是在服务层上执行的,以跨越多个 DAO 调用。

最后,DAO 应该从持久性细节中抽象出业务逻辑,理想情况下允许在不更改业务逻辑(服务)的情况下切换持久层。由于持久性提供者的抽象泄漏(例如延迟加载),这几乎是不可能的。

于 2012-04-05T09:07:32.867 回答
18

DAO - 数据访问对象,是处理与数据存储(通常是数据库)的连接的对象。您在这里有您的查询,DAO 为您的服务提供数据。

服务应该包含你所有的逻辑。如果你有逻辑分离,理论上你可以改变你的 UI 层或 DAO 层而不影响它。

于 2012-04-05T08:36:58.983 回答
10

它提供了脱钩的好处。当数据源发生变化时,您在服务中为所有服务用户(移动客户端、Web 客户端)处理数据的方式不会改变。但是您需要改变从数据源中提取数据的方式。

在此处输入图像描述

于 2017-10-09T07:49:06.390 回答
9

DAO(数据访问对象)是一种设计模式,它包括为数据库上的每个表创建一个类,它提供了一种分离对象持久性和数据访问逻辑的技术

于 2012-04-05T08:48:09.267 回答