我正在学习一本Spring书,他们提到了java域模型。 那是什么?
答案 0 :(得分:36)
域模型(该术语根本不是特定于Java的)是一个在问题域中建模的类,而不是出于技术实现原因而存在的类。
域模型实例通常需要保存在数据库中,而在Java中,它们通常符合Java Beans规范,即它们具有表示各个属性和无参数构造函数的get和set方法。 Spring和其他框架允许您直接在JSP中访问这些属性。
例如,在商店应用程序中,您的一些域模型类将是Product,Order,ShoppingCart和Customer。
答案 1 :(得分:8)
Domain model是问题域的概念模型。通过“java域模型”,它们只是表示代表该模型的java类。这个概念中没有特定于Java的内容。
另请参阅Domain Driven Design,了解将开发重点放在业务领域需求上的方法。
答案 2 :(得分:6)
Michael Borgwardt的回答“一个域模型(这个术语根本不是特定于Java的)是一个类”是错误的。我很惊讶很多人同意这个答案。
域模型是模拟解决方案行为的所有类。这是完成所需行为的最低要求。域模型没有UI和持久性功能(除非问题围绕UI或持久性)。
我见过在一个类中实现的域模型,但这不是面向对象解决方案的设计。在面向对象的域模型中,每个概念都有自己的类,该类实现该概念所需的行为,并包含维护类状态的必要字段。
答案 3 :(得分:4)
让我们从一个例子开始吧。您正在创建一个应用程序,将由您所在地区的某些人使用。在设计系统时,您可以将这些人称为系统用户。您还必须在系统和身份验证信息中管理这些人员的角色列表。因此,您决定在系统中创建一个概念实体。此概念实体进一步映射到软件解决方案(您的应用程序)中的User对象。现在,当您表示应用程序时,将User对象描述为域模型。这个术语背后的基本思想只是。您可以在以下Wikipedia link中进一步阅读相关内容。
答案 4 :(得分:4)
我知道自从上一篇文章以来已经很久了。但重要的是,围绕这一概念的信息是明确的。域模型通常是一组表示特定问题域的类。该概念不依赖于任何一种技术实现。我认为说:
有点误导“域模型实例通常需要保存在数据库中,而在Java中,它们通常符合Java Beans规范,即它们具有表示单个属性和无参数构造函数的get和set方法。 Spring和其他框架允许您直接在JSP中访问这些属性“
域模型通常是域驱动设计的结果。域驱动设计是良好而强大的域模型的关键。我建议阅读Eric Evans的书“领域驱动设计”,以便更好地理解。
域模型类确实有与之相关的信息,但在我看来,行为比此上下文中的数据更重要。域驱动设计的一个重大错误是创建表示域实体数据的数据类,例如客户,并仅为客户属性提供公共getter和setter。这些对象往往只是模仿您的数据库结构,因此实际的业务逻辑更可能驻留在域服务中,从而产生anemic domain model。此模型比域模型更接近Transaction Script。
答案 5 :(得分:0)
用外行的话来说,您的域包是elememts的对象表示形式,您主要但不一定需要呈现UI字段,例如用户名,client_info,特定于解决方案的pojos等。该域包中包含的类将在DAO中使用(DATA ACCESS OBECT)程序包,其中dao将查询数据库并在domain的类中映射这些字段并返回它们。或者,您可以使用诸如hibernate之类的框架并返回该对象,在其中查询数据库将由诸如hibernate之类的框架处理。
此答案更特定于MVC和Java,但详细介绍了可能的实现之一。