服务层的作用是为DAO和客户端之间发送和接收的数据提供操作逻辑。通常情况下,这两个部分会被捆绑在同一个模块中,有时甚至在同一段代码中,但你仍然可以将它们视为不同的逻辑实体。这可能对您有所帮助。 https://softwareengineering.stackexchange.com/questions/220909/service-layer-vs-dao-why-both
DAO是一个轻量级的存在,其唯一作用是提供与数据库的连接,有时会进行抽象处理以便使用不同的数据库后端。服务层存在的目的是为客户端发送和接收数据到DAO之间提供逻辑操作。通常这两个部分会被捆绑在同一个模块中,有时甚至在同一段代码中,但你仍然可以将它们视为不同的逻辑实体。是的,你可以不使用服务层来实现,但这样会缺乏安全性...而没有使用服务层,请求和响应的工作速度更快...服务层的另一个原因是安全性——如果你提供了一个与数据库无关的服务层,那么除了通过服务访问数据库之外,攻击者很难从客户端获得对数据库的访问权限。如果不能直接从客户端访问数据库(并且没有简单的DAO模块充当服务),那么攻击者在获取到客户端控制权后所能做的就只是试图攻击服务层,除非他在获取到最少的数据访问权限之前成功地破解了服务层。由于这些问题已经在StackExchange上得到了gbjbaanb的回答,因此本次不再回答。