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

38

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

我正在寻求理论回答。

4个回答

69

就Spring而言,它并没有区分。按照惯例,您可以使用@Repository标记DAO类,并使用@Service标记服务类。前者还会执行一些持久化层的异常转换。

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

最后,DAO应该从持久化细节中抽象出业务逻辑,理想情况下可以在不更改业务逻辑(服务)的情况下切换持久化层。这几乎不可能实现,因为持久化提供程序的抽象泄漏(例如惰性加载)。


18

DAO - 数据访问对象,是处理与数据存储(通常是数据库)连接的对象。你可以在这里编写查询语句,DAO 提供数据给你的服务。

服务应该包含所有的逻辑。如果将逻辑分开,理论上你就可以更改UI层或DAO层而不会受到影响。


11

它提供了解耦的好处。当数据源改变时,您处理服务中的数据的方式不会影响所有服务用户(移动客户端、Web客户端)。但是需要更改从数据源提取数据的方式。

输入图像描述


9

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


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