论聚合持久化

2020-02-23 191浏览

  • 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 Aggregate Order Order Snapshot Snapshot Order order.pay() save Aggregate Aggregate Order Order Snapshot Snapshot
  • 8. Aggregate- Persistence 示例代码 public interface OrderRepository { Aggregate findById(String orderId); void save(Aggregate orderAggregate); void remove(Aggregate orderAggregate); } public class OrderService { public void checkout(String orderId, CheckoutRequest request) { Aggregate 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 Order OrderItem
  • 10. THANK YOU