看过一些类似的问题:
您还可以告诉我使用它们的背景吗?还是他们的目的?
答案 0 :(得分:776)
答案 1 :(得分:57)
DTO vs VO
DTO - 数据传输对象只是用于在层和层之间传输数据的数据容器。
类比:
简单注册表单,包含属性用户名, 密码和电子邮件ID。
- 在RegistrationServlet文件中提交此表单时,您将获得从您传递的视图层到业务层的所有属性 java bean的属性,然后是DAO或持久层的属性。
- DTO有助于将属性从视图层传输到业务层,最后传输到持久层。
DTO主要用于有效地通过网络传输数据,甚至可以从JVM到另一个JVM。
DTO通常是java.io.Serializable
- 以便通过JVM传输数据。
VO - 值对象[1] [2]表示一组固定的数据,类似于Java枚举。值对象的标识基于它们的状态而不是它们的对象标识,并且是不可变的。一个真实世界的例子是Color.RED,Color.BLUE,SEX.FEMALE等。
POJO与JavaBeans
[1] POJO的Java-Bean是它的私有属性都是通过符合JavaBeans约定的公共getter和setter访问的。 e.g。
private String foo;
public String getFoo(){...}
public void setFoo(String foo){...};
[2] JavaBeans必须实现Serializable并且具有无参数构造函数,而在POJO中没有这些限制。
答案 2 :(得分:39)
基本上,
DTO:“数据传输对象”可以在软件架构中的单独层之间传输。
VO:“值对象”包含一个对象,如Integer,Money等。
POJO:Plain Old Java Object,它不是特殊对象。
Java Beans:要求Java Class
可序列化,具有no-arg
构造函数以及每个字段的getter和setter
答案 3 :(得分:24)
Java Bean与EJB不同。
Java 1.0中的JavaBeans specification是Sun试图在一个看起来像VB的IDE中操作Java对象的尝试。为符合“Java Bean”的对象制定了规则:
EJB后来出现了。它们结合了分布式组件和事务模型,在管理线程,池,生命周期和提供服务的容器中运行。它们与Java Beans相去甚远。
DTOs出现在Java上下文中,因为人们发现EJB 1.0规范对数据库来说过于“讨厌”。人们不是为每个数据元素进行往返,而是将它们批量打包到Java Bean中并运送它们。
POJO是对EJB的反应。
答案 4 :(得分:4)
POJO : 它是一个java文件(类),它不会扩展或实现任何其他java文件(类)。
<强>豆强>: 它是一个java文件(类),其中所有变量都是私有的,方法是公共的,适当的getter和setter用于访问变量。
普通班级: 它是一个java文件(类),可能包含public / private / default / protected变量,可能会也可能不会扩展或实现另一个java文件(类)。
答案 5 :(得分:1)
首先谈谈
普通班级 - 这意味着任何班级都会在java中正常定义,这意味着您创建了不同类型的方法属性的等强>
Bean - Bean并不是什么它只是使用这个bean的特定类的对象,你可以访问与object相同的java类。。
之后谈到最后一个POJO
POJO - POJO 是没有任何服务的类,它只有默认的构造函数和私有属性以及用于设置值的相应setter的属性和getter方法。 它是Plain Java Object的缩写形式。
答案 6 :(得分:0)
difference-between-value-object-pattern-and-data-transfer-pattern