一尘不染

DAO和存储库模式之间有什么区别?

hibernate

数据访问对象(DAO)和存储库模式之间有什么区别?我正在使用Enterprise Java Beans(EJB3),Hibernate
ORM作为基础结构以及域驱动设计(DDD)和测试驱动开发(TDD)作为设计技术来开发应用程序。


阅读 227

收藏
2020-06-20

共1个答案

一尘不染

DAO数据持久性 的抽象。
Repository对象集合 的抽象。

DAO会被认为更接近数据库,通常以表为中心。
Repository将被视为更接近域,仅处理汇总根。

Repository可以使用来实现DAO,但您不会做相反的事情。

同样,a
Repository通常是较窄的接口。它应该是简单对象的集合,有Get(id)Find(ISpecification)Add(Entity)

类似的方法Update适用于DAO,但不适用于Repository-,当使用时Repository,通常通过单独的UnitOfWork跟踪对实体的更改。

看到称为a的实现确实看起来Repository更像a DAO,这确实很常见,因此我认为它们之间的差异有些混乱。

2020-06-20