什么是java域模型?

30 java domain-model

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

Mic*_*rdt 38

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

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

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

  • @Name:"persist"基本上意味着"保存". (7认同)
  • @Name,这意味着它们比包含它们的应用程序实例寿命更长.例如,在关闭并重新启动商店应用程序后,它仍会将您识别为注册客户,并会记住购物车的内容和过去的订单. (2认同)

Don*_*oby 9

域模型是问题域的概念模型.通过"java域模型",它们只是表示代表该模型的java类.这个概念中没有特定的java.

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


小智 7

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

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

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

  • 术语"领域模型"具有更多的汉一个定义.它可能意味着整个应用模型或单个实体模型.这取决于背景. (3认同)

Vij*_*bey 5

让我们从一个例子开始。您正在创建的应用程序将被您当地的某些人使用。设计系统时,请称呼这些人为您的系统用户。您还必须管理这些人在系统中的角色列表和身份验证信息。因此,您决定在系统中创建一个概念实体。该概念实体进一步映射到软件解决方案(您的应用程序)中的User对象。现在,当您代表应用程序时,您可以将该用户对象描述为域模型。该术语背后的基本思想仅在于此。您可以在下面的Wikipedia链接中进一步了解它。


小智 5

我知道距离上次在这里发帖已经过去很长时间了。但重要的是,围绕这个概念的信息必须清晰。领域模型通常是代表特定问题域的一组类。该概念不与任何一种技术实现相关。我认为这样说有点误导:

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

领域模型通常是领域驱动设计的结果。领域驱动设计是良好且稳健的领域模型的关键。我建议您阅读 Eric Evans 的《领域驱动设计》一书,以便您更好地理解。

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