2010-06-14 101 views
7

试图让我的头在将对象保存到持久性存储时将服务层和存储库层的责任整合起来。服务和存储库层的责任

我站在下目前是这样的:

在我的控制,我创建从用户提交的(来自表单)的数据的“注”的对象。然后用户在“NoteService”(通过依赖注入)中调用“Save”。

在“NoteService”的“Save”方法中,我执行业务逻辑验证,然后将“Note”对象传递给“NoteRepository”的“Save”方法。

然后,“NoteRepository”的“Save”方法将检查此对象上是否存在主键,如果是,则从db中获取该对象,并使用通过“Note”对象更新其属性然后将其保存回数据库。 如果没有主键,那么该对象将简单地保存到数据库,然后返回到具有新创建的主键的服务。

+0

我认为你说的很好,什么问题? – uvita 2010-06-14 14:13:52

+0

我的问题基本上是这样做的事情,即这是正确的模式/工作流程 – Gazeth 2010-06-16 15:59:14

回答

4

你对我的关注听起来很不错。我们遵循相同的模式,但倾向于在存储库层上再增加一个图层。我们称之为领域层,并在那里执行我们所有的业务逻辑。我们的服务层只是传递给我们的域名,以防将来我们的任何服务发布到ESB。

你正在做的最大的好处不是混淆了很多人倾向于做的控制器中的所有业务和数据库逻辑。如果你真的想遵循MVC,你总是希望你的控制器尽可能轻。