在将对象保存到持久性存储时,只是试图了解服务层和存储库层的职责。
我现在的立场是:
在我的控制器中,我根据用户提交的数据(从表单中)创建了一个“Note”对象。然后用户在“NoteService”上调用“Save”(通过依赖注入存在)。
在“NoteService”的“Save”方法中,我执行业务逻辑验证,然后将“Note”对象传递给“NoteRepository”的“Save”方法。
“NoteRepository”的“Save”方法然后检查此对象上是否存在现有主键,如果是,则从db获取该对象,并使用通过的“Note”对象更新它的属性。然后将其保存回数据库。 如果没有主键,则只需将对象保存到数据库,然后使用新创建的主键返回服务。
答案 0 :(得分:4)
你对问题的分离对我来说听起来不错。我们遵循相同的模式,但往往会在存储库层添加一层。我们将其称为域层,并在那里执行所有业务逻辑。我们的服务层只是传递到我们的域名,以防我们将来需要将任何服务发布到ESB。
您正在做的最大好处是不会使控制器中的所有业务和数据库逻辑混乱,很多人都倾向于这样做。如果你真的想要关注MVC,你总是希望你的控制器尽可能轻。