见过一些类似的问题:

JavaBean和POJO之间的区别是什么? POJO(普通旧Java对象)和DTO(数据传输对象)之间的区别是什么?

你能告诉我它们在什么语境中使用吗?或者它们的目的是什么?


当前回答

值对象:当需要根据对象的值来衡量对象是否相等时使用。 数据传输对象:将具有多个属性的数据一次跨层从客户端传递到服务器,避免多次调用远程服务器。 普通旧Java对象:它就像一个简单的类,有属性,公共无参数构造函数。正如我们为JPA实体声明的那样。

difference-between-value-object-pattern-and-data-transfer-pattern

其他回答

第一次谈论

普通类-这意味着任何类定义,通常在java中,这意味着你创建不同类型的方法属性等。 Bean - Bean什么都不是,它只是一个特定类的对象,使用这个Bean,你可以访问你的java类,就像object..

之后是最后一个POJO

POJO是一个没有任何服务的类,它只有一个默认的构造函数和私有属性,这些属性用于设置一个对应的setter和getter方法的值。 它是普通Java对象的缩写形式。

Java bean与ejb不是一回事。

Java 1.0中的JavaBeans规范是Sun试图允许在看起来像VB的IDE中操作Java对象的尝试。对于符合“Java Beans”条件的对象,制定了一些规则:

默认构造函数 私有数据成员的getter和setter遵循适当的命名约定 可序列化的 也许还有一些我忘了的。

ejb是后来出现的。它们结合了分布式组件和事务模型,运行在管理线程、池、生命周期和提供服务的容器中。它们与Java bean相去甚远。

dto是在Java上下文中出现的,因为人们发现EJB 1.0规范与数据库过于“健谈”。人们不需要为每个数据元素进行往返,而是将它们批量打包到Java bean中并四处运送。

pojo是对ejb的一种反应。

基本上,

DTO:“数据传输对象”可以在软件架构的不同层之间传输。

VO:“值对象”包含一个对象,如Integer,Money等。

POJO:普通的旧Java对象,不是一个特殊的对象。

Java Beans:要求Java类是可序列化的,有一个无参数的构造函数和每个字段的getter和setter

DTO vs VO

DTO -数据传输对象只是用于在层和层之间传输数据的数据容器。

它主要包含属性。您甚至可以使用没有getter和setter的公共属性。 数据传输对象不包含任何业务逻辑。

类比:具有用户名属性的简单注册表单, 密码和电子邮件id。 当这个表单在RegistrationServlet文件中提交时,您将获得从视图层到您传递的业务层的所有属性 将属性转移到java bean,然后转移到DAO或持久层。 DTO有助于将属性从视图层传输到业务层,并最终传输到持久层。

DTO主要用于在网络上有效地传输数据,甚至可以从JVM传输到另一个JVM。

dto通常是java.io.Serializable——以便跨JVM传输数据。

VO - A值对象[1][2]表示自身是一组固定的数据,类似于Java枚举。值对象的标识基于它们的状态,而不是它们的对象标识,并且是不可变的。一个真实世界的例子就是Color。红色,颜色。蓝色,性。女等。

和贾豆

[1] POJO的java - bean性是通过符合JavaBeans约定的公共getter和setter来访问它的私有属性。如。

    private String foo;
    public String getFoo(){...}
    public void setFoo(String foo){...}; 

[2] JavaBeans必须实现Serializable并具有无参数构造函数,而在POJO中则没有这些限制。

POJO: 它是一个java文件(类),不扩展或实现任何其他java文件(类)。

豆: 它是一个java文件(类),其中所有变量都是私有的,方法是公共的,并且使用适当的getter和setter来访问变量。

普通类: 它是一个java文件(类),可能由公共/私有/默认/受保护的变量组成,它可能扩展也可能不实现另一个java文件(类)。