什么是java域模型?

我正在学习一本Spring书,他们提到了java域模型。 那是什么?

域模型(该术语根本不是特定于Java)是一个对问题域中的某些内容进行建模的类,而不是出于技术实现原因而存在的类。

域模型实例通常需要保存在数据库中,而在Java中,它们通常符合Java Beans规范,即它们具有表示各个属性和无参数构造函数的get和set方法。 Spring和其他框架允许您直接在JSP中访问这些属性。

例如,在商店应用程序中,您的一些域模型类将是Product,Order,ShoppingCart和Customer。

域模型是问题域的概念模型。 通过“java域模型”,它们只是表示代表该模型的java类。 这个概念中没有特定于Java的内容。

另请参阅域驱动设计,了解将开发重点放在业务领域需求上的方法。

Michael Borgwardt的回答“ 一个领域模型(这个术语根本不是Java特定的)是一个类 ”是错误的。 我很惊讶很多人同意这个答案。

域模型是模拟解决方案行为的所有类。 这是完成所需行为的最低要求。 域模型没有UI和持久性function(除非问题围绕UI或持久性)。

我见过在一个类中实现的域模型,但这不是面向对象解决方案的设计。 在面向对象的域模型中,每个概念都有自己的类,该类实现该概念所需的行为,并包含维护类状态的必要字段。

让我们从一个例子开始吧。 您正在创建一个应用程序,将由您所在地区的某些人使用。 在设计系统时,您可以将这些人称为系统用户。 您还必须在系统和身份validation信息中管理这些人员的角色列表。 因此,您决定在系统中创建概念实体。 此概念实体进一步映射到软件解决方案(您的应用程序)中的User对象。 现在,当您表示应用程序时,将User对象描述为域模型。 这个术语背后的基本思想只是。 您可以在以下Wikipedia链接中进一步阅读相关内容。

我知道自从上一篇文章以来已经很久了。 但重要的是,围绕这一概念的信息是明确的。 域模型通常是一组表示特定问题域的类。 该概念与任何一种技术实现无关。 我认为说:有点误导:

域模型实例通常需要保存在数据库中,而在Java中,它们通常符合Java Beans规范,即它们具有表示单个属性和无参数构造函数的get和set方法.Spring和其他框架允许您直接在JSP中访问这些属性

域模型通常是域驱动设计的结果。 域驱动设计是良好而强大的域模型的关键。 我建议阅读Eric Evans的书“领域驱动设计”,以便更好地理解。

域模型类确实具有与它们相关联的信息,但在我看来,行为比此上下文中的数据更重要。 域驱动设计的一个重大错误是创建表示域实体数据的数据类,例如客户,并仅为客户属性提供公共getter和setter。 这些对象倾向于模仿您的数据库结构,因此实际的业务逻辑更可能驻留在域服务中,从而导致贫乏的域模型 。 此模型比域模型更接近事务脚本 。