我正在研究涉及版本控制实体的项目,以便用户修改整个历史记录。根据服务有一个存储库可以吗?
基本上,这个想法是当一个实体被创建时,其内容的版本1也被保存在一个存档表中。无论何时修改实体,都会存储增量版本。
将实体的状态保存到归档表由ArchiveService
处理。
当实体被持久化时,ArchiveService需要被调用,以创建第1版,所以最合理的方式似乎是从存储库调用它,从而通过服务作为一个依赖到仓库:
public class Repository {
private ArchiveService archiveService;
public Repository(ArchiveService service) {
this.archiveService = service;
}
public void add(Entity entity) {
// ... (persist the entity)
this.archiveService.createVersion(entity);
}
}
这是一个很好的做法,还是有任何缺点? 到目前为止,我所看到的服务取决于存储库,而不是其他方式。
我一直认为存储库是域的一部分。你有这样的来源吗? – Benjamin
@Benjamin我在最新的答案中详细阐述了这一点。 –
谢谢,这有助于很多。 – Benjamin