在Spring术语中,命令,表单,业务和实体对象之间的区别?

我试图围绕松散耦合系统来围绕这些对象之间的差异进行研究。业务对象与实体对象是否相同?我可以将MVC中的业务或实体对象用作命令对象吗?命令对象与表单对象相同吗?只是想在Spring术语和用法中澄清对象的类型。

我发现了一些关于stackoverflow的问题,但是没有任何问题可以按我的喜好进行解释。

Spring Web MVC文档似乎说您可以将您的业务(实体?)对象用作命令/表单对象,但这不违背关注点分离吗?

从Spring Docs:

可重用的业务代码,无需重复。使用现有的业务对象作为命令或表单对象,而不是对其进行镜像以扩展特定的框架基类。

回答:

1)从技术上讲,业务对象和业务实体(或您称为它们的“实体对象”)并不相同。

业务实体包含数据。而业务对象包含有关您的业务实体的逻辑(如何创建实体,如何更新实体等)。从技术上讲,业务对象是一种旧的J2EE模式,在当前代码中我还没有真正看到它,因此我无法赘述。有人会说业务对象对应于DAO,而有些人会说服务。有些开发人员只是说业务对象和实体是相同的,因为他们认为“对象”和“实体”具有相同的粒度,或者是因为他们的业务实体也包含逻辑,或者仅仅是因为他们不知道。我只喜欢谈论包含数据的对象的“(业务)实体”,并且我从不使用术语“业务对象”,因为它可以有不同的解释。

2)根据Spring MVC文档,命令对象是JavaBean,它将使用表单中的数据进行填充。另一方面,什么是表单对象,但是支持您表单的对象呢?

因此,是的,命令对象在语义上与表单对象相同。我喜欢术语“对象”,我发现它立即可以理解。

3)正如您所说,根据Spring MVC文档,该框架的一项功能是

可重用的业务代码,无需重复。 以扩展特定的框架基类。

所以是的,根据Spring,您可以-并且应该使用业务实体作为您的命令/表单对象。如果您不确信,这是一些原因:

  • 为了简单起见。天知道,我们的Java软件体系结构需要更多的简单性。一些公司使用太多层来做非常简单的事情。为此,在Spring,Java(请参见下文)和其他方面的带领下,人们采取了许多措施来应对这一问题。
  • 为了您自己,因为它使编程更简单,更轻松,更有趣
  • 因为Spring和Java(通过JSR)都这么说。确实:我们对表单对象有什么期望?表单支持和可能的一些验证。我们将如何进行验证?Spring MVC 3支持使用JSR-303 @Valid批注验证@Controller输入。我们将约束放在哪里验证?根据JSR-303,存储这些约束的最佳位置(@ NotNull,@ Length等)位于业务实体本身内。底线:最好将业务实体用作命令/表单对象。
  • 关注点分离仍然受到尊重。只是一个关注点(表单支持)不再是关注点!Spring MVC为您处理它。:-)您只需要担心您的业务实体。

以上是 在Spring术语中,命令,表单,业务和实体对象之间的区别? 的全部内容, 来源链接: utcz.com/qa/421003.html

回到顶部