Java 在Spring框架中,DAO和服务层到底是什么?

Java 在Spring框架中,DAO和服务层到底是什么?,java,spring,service,dao,Java,Spring,Service,Dao,在Spring框架中,DAO和服务层到底是什么 我在寻找理论上的答案。DAO-数据访问对象,是处理与数据存储(典型的数据库)连接的对象。这里有您的查询,DAO为您的服务提供数据 服务应该包含您的所有逻辑。如果您有logic Separate,理论上您可以更改UI层或DAO层,而不会影响它。DAO(数据访问对象)是一种设计模式,它包括为数据库上的每个表创建一个类,它提供了一种分离对象持久性和数据访问逻辑的技术就Spring而言没有区别。按照惯例,您可以使用@Repository标记DAO类,使用@

在Spring框架中,DAO和服务层到底是什么


我在寻找理论上的答案。

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


服务应该包含您的所有逻辑。如果您有logic Separate,理论上您可以更改UI层或DAO层,而不会影响它。

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

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

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


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

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