Appearance
Day 20 - 领域模型持久化
📖 今日目标
- 理解领域模型的持久化策略
- 掌握对象-关系映射(ORM)的DDD实践
- 学习聚合的持久化边界
核心概念
持久化策略
领域模型的持久化需要考虑:
- 聚合作为持久化单元
- 仓储管理聚合的生命周期
- 避免"阻抗失配"
关键要点
1. 聚合持久化
java
// 聚合根作为持久化入口
public interface OrderRepository {
void save(Order order);
Optional<Order> findById(OrderId id);
}
// 保存整个聚合
orderRepository.save(order); // Order及其包含的所有对象一起保存2. 避免贫血模型
持久化不应该导致贫血模型:
- 领域逻辑应该存在于实体中
- 持久化映射不应该破坏封装
3. ORM映射策略
| 策略 | 说明 |
|---|---|
| 激活记录 | 实体直接对应表 |
| 数据映射器 | 独立的映射层 |
| 仓储 | 领域层和数据层解耦 |
面试考点
问题:聚合持久化时需要注意什么?
答案:
- 持久化整个聚合:聚合内对象不应单独持久化
- 保持聚合边界:跨聚合的引用使用ID而非对象
- 避免破坏封装:持久化实现不应暴露内部结构
- 事务边界:一个聚合对应一个事务
实践思考
🎯 思考题:
设计Order聚合的持久化,包括Order和OrderItem的映射策略。
📅 学习进度
| Day | 主题 | 状态 |
|---|---|---|
| 01-19 | 战略设计 + 战术 + 架构 | ✅ |
| 20 | 领域模型持久化 | ✅ |
| 21 | 事件溯源(Event Sourcing) | ⬜ |
| ... | ... | ... |
| 30 | 复习与总结 | ⬜ |
