数据访问对象(DAO)和存储库模式之间有什么区别?我正在使用Enterprise Java Beans(EJB3),Hibernate ORM作为基础结构以及域驱动设计(DDD)和测试驱动开发(TDD)作为设计技术来开发应用程序。
DAO是 数据持久性 的抽象。 Repository是 对象集合 的抽象。
DAO
Repository
DAO会被认为更接近数据库,通常以表为中心。 Repository将被视为更接近域,仅处理汇总根。
Repository可以使用来实现DAO,但您不会做相反的事情。
同样,a Repository通常是较窄的接口。它应该是简单对象的集合,有Get(id),Find(ISpecification),Add(Entity)。
Get(id)
Find(ISpecification)
Add(Entity)
类似的方法Update适用于DAO,但不适用于Repository-,当使用时Repository,通常通过单独的UnitOfWork跟踪对实体的更改。
Update
看到称为a的实现确实看起来Repository更像a DAO,这确实很常见,因此我认为它们之间的差异有些混乱。