论聚合持久化
如果无法正常显示,请先停止浏览器的去广告插件。
1. 梅雪松
2. 持久化在
分层架构中的演进
经典三层架构 DDD分层架构
⽤户界⾯层 ⽤户界⾯层
业务逻辑层
应⽤层
数据访问层
数据库
领域层
基础设施层
3. (Aggregate)
以聚合为单元
进⾏持久化
(Root)
⼀个典型的资源库(Repository)接⼝定义
(
Boundary)
Eric Evans
public interface OrderRepository {
public Order findById(String id);
public void save(Order order);
public void remove(Order order);
}
4. 问题⼀
5. 问题⼆
NoSQL
6. Aggregate-
Persistence
回归问题本源
Service
Repository
findById
Order
Order
Order
order.pay()
save
Order
Order
7. Aggregate-
Persistence
回归问题本源
Service
Repository
findById
Aggregate<T> Aggregate<T>
Order Order
Snapshot Snapshot
Order
order.pay()
save
Aggregate<T> Aggregate<T>
Order Order
Snapshot Snapshot
8. Aggregate-
Persistence
示例代码
public interface OrderRepository {
Aggregate<Order> findById(String orderId);
void save(Aggregate<Order> orderAggregate);
void remove(Aggregate<Order> orderAggregate);
}
public class OrderService {
public void checkout(String orderId, CheckoutRequest request) {
Aggregate<Order> aggregate = orderRepository.findById(orderId);
Order order = aggregate.getRoot();
Payment payment = new Payment(request.getAmount());
order.checkout(payment);
orderRepository.save(aggregate);
}
}
9. Aggregate-
Persistence
/
Version
Aggregate<T>
Order
OrderItem
10. THANK YOU