Skip to content

Repository & Unit of Work — Simple#

classDiagram
  class UseCase {
    +place(order)
  }
  class OrderRepository {
    <<interface>>
    +findById(id)
    +save(order)
  }
  class SqlOrderRepo
  class InMemoryOrderRepo
  class UnitOfWork {
    +begin()
    +commit()
    +rollback()
  }
  UseCase --> OrderRepository
  OrderRepository <|.. SqlOrderRepo
  OrderRepository <|.. InMemoryOrderRepo
  UseCase --> UnitOfWork

A Repository is a collection-like interface for one aggregate type. A Unit of Work scopes one logical transaction across multiple repositories. Together they hide persistence from the domain.