我希望使用Spring实现DDD来创建一个应用程序。假设我有一个业务实体“客户”和一个接口“CustomerRepository”。
由于Spring提供了CrudRepository
和JpaRepository
来执行基本的CRUD操作以及其他操作,例如查找方法,我想要使用它们。因此,我的接口变成:
@Repository
public interface CustomerRepository extends JpaRepository<Customer, Long>{
}
根据领域驱动设计(DDD)的理念,接口应该在领域层中,而实现应该在基础设施层中。那么我的问题是,CustomerRepository属于哪一层?
ICustomerRepository
,包含一些函数。CustomerRepositoryAdapter
。ICustomerRepositoryJPA
,用于与数据库交互。CustomerRepositoryAdapter
使用JPA接口来工作。这是因为我使用了“组合优于继承”来完成工作。这种方式可以使领域实体与数据库使用的JPA实体不同,以满足需要。 - Luca Masera