模型、JavaBean和POJO之间的区别

20

我开始学习使用Spring的MVC。我经常听到"Bean"这个词,Bean包含setter和getter。"Model"基本上是数据流转的东西,而"POJO"与"Bean"相同。但是所有这些术语对我来说都很混乱,看起来都一样,请你能不能解释一下它们之间的确切区别。

Javabean是一种Java对象,通常用于传输数据或持久化到数据库中。Javabean必须满足特定的规范:有一个无参构造函数;属性使用getter和setter方法访问,属性名称遵循JavaBeans命名约定。

POJO(Plain Old Java Object)是一个普通的Java对象,没有实现任何框架或接口的规范。POJO没有限制,可以随意添加属性和方法,通常用于业务逻辑处理。

Model在MVC中代表应用程序中的数据。它既可以是Javabean也可以是POJO。Model通常由控制器提供给视图,以便视图可以呈现数据。

3个回答

26
如果您正在使用MVC架构,则模型代表您的领域:即实体,并且这不是Java相关的术语。在Java中,您的模型表示为Java Beans(Java EE的最佳实践)。Java Bean是一种普通的Java类,它实现了Serializable接口,具有无参构造函数,并为每个字段具有getter和setter。
然而,POJO只是一个对象的名称,没有任何限制,除了Java语言规范所强制的那些限制(维基百科)。这仅仅是出于惯例,并且与MVC架构没有严格的关联。请注意,Java Bean是实现Serializable接口的POJO。

2

唯一的区别是Bean可以被序列化。

来自Java文档 - http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html

一个类实现java.io.Serializable接口才能启用类的序列化功能。没有实现此接口的类将不会有它们的任何状态被序列化或反序列化。所有可序列化类的子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。

而模型是处理业务逻辑的不同内容。

你可以参考下面的链接

POJO和Bean之间的编程差异


1
作为补充,有必要描述每个项目的意图。
根据维基百科的定义,
“POJO”一词最初表示不遵循任何主要Java对象模型、约定或框架的Java对象
理想情况下,POJO是一个Java对象,除了Java语言规范强制执行的限制外,没有任何限制
通常,POJO不依赖于任何库、接口或注释。因此,POJO更容易被不同的系统重用。
那么,什么是Java Bean,为什么我们要创建这个项目?从此链接的描述中可以清楚地澄清这一点。
JavaBean是将许多对象封装到单个对象(bean)中的类。它们是可序列化的,具有零参数构造函数,并允许使用getter和setter方法访问属性。
我们为什么希望Jave beans表现出这种行为?
  • 该类必须具有公共默认构造函数(无参数)。

这允许在编辑和激活框架内轻松实例化。

  • 根据标准命名约定,类属性必须可通过get、set、is(对于布尔属性可以使用is而不是get)、to和其他方法(称为访问器方法和变异器方法)进行访问。

这允许在框架内轻松自动检查和更新bean状态,其中许多包括各种类型属性的自定义编辑器。Setter可以有一个或多个参数。

  • 该类应该是可序列化的。

这允许应用程序和框架以与VM和平台无关的方式可靠地保存、存储和恢复bean的状态。

一般来说,模型不会与POJO或JavaBean进行比较,因为它是一个非常不同的项目。正如其他答案所提到的,模型通常是MVC的一个概念。

模型是该模式的核心组件。它是应用程序的动态数据结构,独立于用户界面[6]。它直接管理应用程序的数据、逻辑和规则。

正如您所看到的,POJO或JavaBean可以在MVC模式中作为模型层,但模型层中还有很多其他内容,例如应用程序的逻辑和规则。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接