Appearance
Day 11 - 仓储模式(Repository)
📖 今日目标
- 理解仓储(Repository)的概念
- 掌握仓储的设计原则
- 学习仓储的实现模式
核心概念
什么是仓储?
仓储(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 |
|---|---|---|
| 关注点 | 聚合的持久化 | 数据访问 |
| 抽象层次 | 业务边界 | 技术边界 |
| 领域概念 | 使用领域语言 | 使用技术语言 |
面试考点
问题:仓储模式的好处是什么?
答案:
- 解耦:领域层与数据持久化技术解耦
- 可测试性:可以mock仓储进行单元测试
- 可替换性:可以更换持久化技术而不影响领域层
- 领域语言:接口使用领域术语而非技术术语
实践思考
🎯 思考题:
设计一个订单仓储接口,包含哪些方法?为什么?
📅 学习进度
| Day | 主题 | 状态 |
|---|---|---|
| 01-10 | 战略设计 + 战术基础 | ✅ |
| 11 | 仓储模式(Repository) | ✅ |
| 12 | 工厂模式(Factory) | ⬜ |
| ... | ... | ... |
| 30 | 复习与总结 | ⬜ |
