数据访问对象 (DAO) 和存储库模式有什么区别?我正在使用 Enterprise Java Beans (EJB3)、Hibernate ORM 作为基础架构以及域驱动设计 (DDD) 和测试驱动开发 (TDD) 作为设计技术来开发应用程序。
DAO是 数据持久性* 的抽象。 是对象集合 Repository的抽象。 *
DAO
Repository
DAO将被认为更接近数据库,通常以表为中心。 Repository将被认为更接近域,仅处理聚合根。
Repository可以使用DAO‘s 来实现,但你不会做相反的事情。
此外,aRepository通常是较窄的界面。它应该是一个简单的对象集合,带有Get(id), Find(ISpecification), Add(Entity)。
Get(id)
Find(ISpecification)
Add(Entity)
类似的方法Update适用于 a DAO,但不适用于 a Repository- 当使用 a 时Repository,对实体的更改通常由单独的 UnitOfWork 跟踪。
Update
Repository看到称为 a 的实现实际上更像是 a似乎很常见DAO,因此我认为它们之间的区别存在一些混淆。