问题标题中提到的概念在某种程度上是同义词吗?主要差异在哪里(背景,结构,......)可以被视为另一个的子集?以下是维基百科的一些简要定义。
POJO(普通旧Java对象) Wikipedia
在计算软件中,POJO是一个 Plain Old Java Object的首字母缩写。该 name用来强调给定的 object是普通的Java Object,而不是 一个特殊的对象,特别是 不是Enterprise JavaBean。术语 由丽贝卡的马丁福勒创造 帕森斯和约什麦肯齐在 2000年9月:
"We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nicely."
Java Bean Wikipedia
JavaBeans是可重复使用的软件 可以是Java的组件 在构建器中以视觉方式操纵 工具。实际上,他们是课程 用Java编程编写 语言符合特定的 惯例。他们习惯了 将许多对象封装成一个 对象(bean),以便它们可以 作为单个bean对象传递 而不是作为多个人 对象。 JavaBean是Java对象 这是可序列化的,有一个nullary 构造函数,并允许访问 使用getter和setter的属性 方法
价值对象 Wikipedia
以前的数据传输对象(DTO) 称为值对象或VO,是一种 用于传输数据的设计模式 软件应用之间 子系统。 DTO通常用于 与数据访问对象结合 从数据库中检索数据。
业务对象 Wikipedia
业务对象是一种类型 可理解的实体是一个演员 在业务层内部 n层面向对象计算机 程序
相关:
Difference between DTO, VO, POJO, JavaBeans? What is the difference between a JavaBean and a POJO? DDD: what's the use of the difference between entities and value objects?
答案 0 :(得分:6)
并非所有这些分类都相关。这是我的理解:
POJO就是它的名字所暗示的 - 一个普通的旧Java对象。没什么特别的。当我们说对象是POJO时,这正是我们想要传达的。今天,大多数应用程序使用某种底层框架,并且框架对与框架集成的对象提出了要求 - 对象必须实现接口或扩展类。当我们说一个对象是一个POJO时,我们的意思是说它只是一个普通的对象而且对任何框架都没有依赖性。
JavaBean是一个遵循您的问题中描述的某些约定的java类。这些对象通常由某些框架强制要求,这些框架使用反射来找出对象的属性(可通过getter / setter访问)并操纵它们,例如,暴露于JSP,Spring bean等的bean。关于JavaBeans的好处是它们仍然是POJO。虽然它们遵循某些约定,但约定不是由任何特定框架定义,而是由Sun Javabean标准定义,并且类仍然是普通的Java类,与任何第三方框架的类或接口无关。
Business Objects引用代表您的业务领域实体的对象。这些通常位于业务层 - 所有业务逻辑所在的层。这些对象通常映射到持久性存储实体,例如表。这些对象可以是POJO,JavaBeans,EJB等。
值对象是一种设计模式。在某些小型Web应用程序中,您还可以选择在Web层中使用业务对象。但是,在较大的应用程序或J2EE应用程序中,您可以定义值对象以将信息从业务层移动到Web层。这就是为什么它们也被称为数据传输对象(DTO)。这些对象通常只具有Web层中所需的属性,并留下业务对象的属性,这些属性是用于业务层消费的。它们还可能具有在业务层中生成的“计算”属性。使用此模式有助于解耦业务层和Web层。
答案 1 :(得分:3)
这是我的看法:
答案 2 :(得分:1)
问题在于,使用其中一些作为同义词是否是错误的(就像我听过一些人所做的那样)以及是否可以将给定的分类视为一个子集或另一个。
将这些术语用作同义词是错误的。它们显然具有不同的含义。引用的定义(以及其他答案中提供的定义)清楚地说明了这一点。
但是,如果使用这些术语中的许多(甚至全部)来描述相同的对象或对象通常是有效的。这完全是一个观点问题;即你试图强调的对象的哪个方面。
答案 3 :(得分:0)
综合(来自答案):
P.S:标记为社区维基,所以随时可以编辑。