初学了解SpringBoot框架: Dao层、Service层、Controller层的作用

本文详细解释了软件开发中常用的三层架构,包括Dao层、Service层和Controller层的作用与职责。Dao层负责与数据库交互,Service层封装业务逻辑,Controller层接收请求并调用Service层。

Dao层:全称Data Access Object。Dao层比较底层,负责与数据库打交道具体到对某个表、某个实体的增删改查
Service层:又叫服务层或业务层,封装Dao层的操作,使一个方法对外表现为实现一种功能,例如:网购生成订单时,不仅要插入订单信息记录,还要查询商品库存是否充足,购买是否超过限制等等。
Controller层:业务控制层,负责接收数据和请求,并且调用Service层实现这个业务逻辑。

Controller层像是一个服务员,他把客人(前端)点的菜(数据、请求的类型等)进行汇总什么口味、咸淡、量的多少,交给厨师长(Service层),厨师长则告诉沾板厨师(Dao 1)、汤料房(Dao 2)、配菜厨师(Dao 3)等(统称Dao层)我需要什么样的半成品,副厨们(Dao层)就负责完成厨师长(Service)交代的任务。不知道这个比喻是否合适。
————————————————
原文链接:https://blog.youkuaiyun.com/LL142857/article/details/89242816

### DAO的设计与实现 #### 什么是DAODAO(Data Access Object,数据访问对象)是一个设计模式,其核心思想是将数据访问逻辑封装到一个独立的类中[^4]。这种模式的主要目的是分离业务逻辑和数据访问逻辑,从而提升代码的可维护性、可测试性和可扩展性。 在Java开发中,特别是Spring框架下,DAO通常被用来处理数据库的操作,比如增删改查(CRUD)。它通过抽象化的方式隐藏了具体的SQL查询或其他数据访问细节[^3]。 --- #### DAO作用 1. **数据访问逻辑的集中管理** DAO专注于数据的存取操作,使得开发者无需在服务编写复杂的SQL语句或ORM配置。 2. **解耦合** 将业务逻辑和服务从具体的数据访问技术中分离出来,便于更换不同的数据源或存储方案。 3. **事务管理和资源控制** DAO可以通过Spring的声明式事务管理功能来确保多步操作的一致性,并有效管理数据库连接等资源。 --- #### 泛型DAO的应用 泛型DAO进一步增强了DAO模式的功能,允许为不同类型的实体提供通用化的接口定义[^1]。这不仅减少了重复代码的数量,还提升了开发效率。例如,在Spring Data JPA中,`JpaRepository<T, ID>`就是一个典型的泛型DAO接口实现。 以下是基于Spring Boot的一个简单泛型DAO示例: ```java // 定义泛型DAO接口 public interface GenericDao<T, ID> { T findById(ID id); List<T> findAll(); void save(T entity); void deleteById(ID id); } // 使用Spring Data JPA实现泛型DAO @Repository public class UserDaoImpl implements GenericDao<User, Long>, JpaRepository<User, Long> { @Override public User findById(Long id) { return this.findById(id).orElse(null); // 调用JPA方法 } @Override public List<User> findAll() { return this.findAll(); // 调用JPA方法 } } ``` 上述代码展示了如何利用Spring Data JPA快速构建一个支持多种实体的泛型DAO。 --- #### DAO vs Repository 虽然DAO和Repository都属于数据访问领域内的设计模式,但两者存在一定的差异: - DAO更偏向于底的数据持久化操作,关注的是如何高效地完成基本的CRUD任务[^2]。 - Repository则站在更高的次上看待问题,强调对整个对象集合的行为建模,同时屏蔽掉内部的数据组装过程。 因此,在实际项目中可以根据需求选择合适的模式或者混合使用这两种方式。 --- #### 注意事项 当实现DAO时需注意以下几个方面: - **安全性**:防止SQL注入攻击,推荐采用参数化查询或ORM工具自动生成安全的SQL语句。 - **性能优化**:合理设置缓存策略以及分页加载机制以应对大数据量场景下的性能瓶颈。 - **异常处理**:捕获并转换可能发生的运行期错误为应用级别的异常以便更好地传递上下文信息给调用方。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值