Java后端对象分层设计
·
文章目录
前言
一套接近大厂的后端对象分层设计(非常实用),你理解之后,代码结构会立刻提升一个档次。
一、先给你整体结构(核心模型🔥)
一个标准后端(以电商为例):
Controller → Service → Domain/BO → DAO → DB
↑
DTO / VO
二、各层职责 + 对象类型
1️⃣ Controller 层(接口层)
👉 只做两件事:
- 接收请求(DTO)
- 返回结果(VO)
示例:
@PostMapping("/create")
public OrderVO create(@RequestBody OrderCreateDTO dto) {
return orderService.createOrder(dto);
}
2️⃣ DTO(入参对象)
👉 前端传给后端的数据
public class OrderCreateDTO {
private Long userId;
private List<ItemDTO> items;
}
特点:
- 只负责接收数据
- 不写业务逻辑
3️⃣ VO(返回对象)
👉 返回给前端的数据
public class OrderVO {
private Long orderId;
private BigDecimal amount;
}
特点:
- 可以裁剪字段
- 不暴露敏感信息
4️⃣ Service 层(业务层🔥)
👉 核心逻辑都在这里
public OrderVO createOrder(OrderCreateDTO dto) {
// 校验
// 计算价格
// 调用库存
// 生成订单
}
5️⃣ BO(Business Object,很多人不会用)
👉 业务内部使用的对象
public class OrderBO {
private Long userId;
private BigDecimal totalPrice;
}
作用:
👉 把 DTO 转成“业务模型”
6️⃣ DO / Entity(数据库对象)
👉 对应数据库表
public class OrderDO {
private Long id;
private Long userId;
private BigDecimal amount;
private Date createTime;
}
7️⃣ DAO(数据访问层)
@Mapper
public interface OrderMapper {
void insert(OrderDO order);
}
三、完整调用链(非常重要🔥)
前端请求
↓
OrderCreateDTO
↓
Controller
↓
Service
↓
DTO → BO(转换)
↓
BO → DO(转换)
↓
DAO
↓
数据库
↓
DO → BO → VO
↓
返回前端
四、为什么要分这么多层?(本质🔥)
不是为了“好看”,而是解决 3 个问题:
✅ 1. 解耦(最重要)
前端变化 ≠ 数据库变化
✅ 2. 安全
password / 内部字段 不暴露
✅ 3. 灵活扩展
一个 DO → 多种 VO
五、很多人写错的地方(你要避免❌)
❌ 1. Controller 直接用 DO
public OrderDO create(OrderDO order) {}
👉 问题:
- 暴露数据库结构
- 后期改表就炸
❌ 2. DTO = DO(偷懒)
👉 小项目可以,大项目会崩
❌ 3. Service 返回 DO
👉 破坏分层
❌ 4. 没有转换层
👉 后期维护地狱
六、正确做法(推荐🔥)
👉 一定要有转换:
DTO ↔ BO ↔ DO ↔ VO
可以用工具:
- MapStruct(推荐🔥)
- BeanUtils(简单但慢)
七、命名规范(非常关键)
DTO
OrderCreateDTO
OrderUpdateDTO
OrderQueryDTO
VO
OrderVO
OrderDetailVO
OrderListVO
DO
OrderDO
UserDO
BO(可选)
OrderBO
八、一个真实电商例子(你体会一下🔥)
下单流程
1. 前端传:
{
"userId": 1,
"items": [...]
}
2. DTO:
OrderCreateDTO
3. Service:
校验库存
计算金额
生成订单号
4. DO:
OrderDO → insert DB
5. 返回:
OrderVO
九、进阶:什么时候可以“简化”?(现实建议)
小项目:
DTO ≈ VO ≈ DO
👉 可以合并
中大型系统:
必须分层
十、一句话总结(建议记住)
👉
DTO 负责接收数据,VO 负责返回数据,DO 负责数据库映射,BO 负责业务逻辑承载,通过分层实现解耦、可维护和安全。
十一、你现在已经到这个层级了:
理解了:
- Spring Bean
- IOC / AOP
- 自动配置
- 分层设计
更多推荐

所有评论(0)