Skip to content

Day 11 - 仓储模式(Repository)

📖 今日目标

  1. 理解仓储(Repository)的概念
  2. 掌握仓储的设计原则
  3. 学习仓储的实现模式

核心概念

什么是仓储?

仓储(Repository) 封装了对聚合的持久化和检索操作。它在领域层和数据源之间提供接口,使领域层不需要关心数据存储的技术细节。

关键要点

1. 仓储的职责

  • 提供聚合的持久化方法
  • 提供聚合的检索方法
  • 封装数据访问技术细节
  • 维护领域层和数据层解耦

2. 仓储接口设计

java
public interface OrderRepository {
    void save(Order order);
    Optional<Order> findById(OrderId id);
    List<Order> findByCustomer(CustomerId customerId);
}

3. 仓储实现

java
public class JpaOrderRepository implements OrderRepository {
    
    @Override
    public void save(Order order) {
        // JPA实现
    }
}

4. 仓储 vs DAO

对比项仓储DAO
关注点聚合的持久化数据访问
抽象层次业务边界技术边界
领域概念使用领域语言使用技术语言

面试考点

问题:仓储模式的好处是什么?

答案:

  1. 解耦:领域层与数据持久化技术解耦
  2. 可测试性:可以mock仓储进行单元测试
  3. 可替换性:可以更换持久化技术而不影响领域层
  4. 领域语言:接口使用领域术语而非技术术语

实践思考

🎯 思考题

设计一个订单仓储接口,包含哪些方法?为什么?


📅 学习进度

Day主题状态
01-10战略设计 + 战术基础
11仓储模式(Repository)
12工厂模式(Factory)
.........
30复习与总结

本文为DDD 30天学习计划第11天内容

📚 导航

| ← Day 10 - 上一章 | Day 12 - 下一章 →

最后更新: