存储库应该有更新/保存/删除方法吗?

时间:2018-02-08 10:04:00

标签: repository repository-pattern crud

我想为我的项目实现Repository设计模式,但是不清楚在存储库中是否使用CRUD操作。有些资源说您不应该使用更新/保存/删除方法,因为存储库仅用于保存内存中的对象,您应该为其他操作提供服务。

哪一个是最好的方式?

感谢。

1 个答案:

答案 0 :(得分:3)

存储库模式的Martin Fowler’s definition摘要:

  

使用类似集合的接口访问域对象,在域和数据映射层之间进行调解。

因此,如果我们同时使用addupdate方法,我可以声称它不是一个类似集合的界面,对吧?在添加到类似集合的集合时,我不需要费心检查对象是否已存在。

有两种常见的添加/更新方法:

  • 面向集合的存储库确实试图模仿内存中的集合,因此如果对象已经更新但已经存在于集合中,则不需要重新添加对象。存储库(或隐藏在其下方的层,例如ORM)应该注意跟踪对实体的更改。您在第一次创建对象时只需add一个对象,然后在更改实体后不再需要其他方法。

  • 面向持久性的存储库知道在进行更改后需要显式“保存”对象,因此在创建实体或更改实体时,您可以使用实体调用save。 p>

(这些是我对Vaughn Vernon在Implementing Domain-Driven Design中定义的解释。)

delete很好,但也许remove会是一个更好的名字。