当前位置: 首页 > 知识库问答 >
问题:

Model、javabean和POJO之间的差异

宗政斌
2023-03-14

我从Spring开始学习MVC。我听说过很多次< code>Bean,它包含setter和getter。< code>Model基本上就是数据流,而< code>Pojo与< code>Bean相同。但是这个学期我真的很困惑,所有这些对我来说看起来都一样,你能解释一下它们之间的确切区别吗?

JAVABEAN

波乔

共有3个答案

戴凯歌
2023-03-14

作为补充,有必要描述每个项目的意图。

根据维基的定义,

术语“POJO”最初表示不遵循任何主要Java对象模型,约定或框架的Java对象

理想情况下,POJO是一个不受任何限制的Java对象,除了Java语言规范强制的限制

通常,POJO不依赖于任何库、接口或注释。因此,POJO更有可能被不同的系统重用。

好,那么什么是Java Bean,我们为什么要创建这个项目?< br >我认为这个链接的描述已经足够清楚了。

JavaBeans是将许多对象封装成一个对象(bean)的类。它们是可序列化的,具有零参数构造函数,并允许使用getter和setter方法访问属性。

为什么我们要Jave beans这样表现?

  • 该类必须具有公共默认构造函数(没有参数)。

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

  • 根据标准命名约定,类属性必须可以使用get、set、is(可以用于布尔属性而不是get)、to和其他方法(所谓的accessor方法和mutator方法)访问

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

  • 该类应该是可序列化的

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

一般来说,这个模型不会与POJO或JaveBean相比较,因为它是一个完全不同的项目。像其他回答中提到的一样,模型通常是MVC的一个概念。

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

正如你所看到的,POJO或JavaBean可以在MVC模式中的模型层,但是模型层中有更多的东西,例如,应用程序的逻辑和规则。

亢胤运
2023-03-14

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

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

类的可序列化性由实现 java.io.Serializable 接口的类启用。未实现此接口的类将不会序列化或反序列化其任何状态。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。

虽然模型是处理您的业务逻辑的不同事物。

你可以参考下面的链接

POJO 和 Bean 之间的编程差异

丁绪
2023-03-14

如果您使用的是MVC架构,那么模型代表您的域:表示您的实体,而不是与java相关的术语
您的模型在Java中表示为Java Beans(Java EE中的最佳实践)
JavaBean是一个普通的Java类,它实现Serializable接口,具有无参数构造函数,每个字段都有getter和setter。

然而,POJO只是对象的一个名称,除了Java语言规范(Wikipeadia)强制的限制之外,不受任何限制。这只是出于惯例的考虑,与MVC架构没有严格的联系。< br >注意,Java beans是实现Serializable接口的POJOs。

 类似资料:
  • 我有以下两门课。我可以说第一个是POJO类,第二个是Bean类吗? 1)POJO类,因为它只有getter和setter方法,所有成员都声明为私有 2) Bean类-所有成员变量都是私有的,具有getter和setter,并实现接口 它还有一个无参数构造函数。

  • 问题内容: 只是来自相对Java新手的一个简单问题: JavaBean和EJB有什么区别? 问题答案: Java bean只是一组约定。EJB是J2EE业务组件的标准。 特别是Java Bean: 具有公共默认构造函数; 可读属性方法以“ get”开头; 可写属性方法以“ set”开头;和 是可序列化的。 例如,具有“ margin”属性的Java bean至少看起来像这样: EJB尽管有名称,但

  • 问题内容: 很快就有两个相等运算符:double equals( )和Triple equals( ),两者之间有什么区别? 问题答案: 简而言之: 操作员检查其实例值是否相等, 操作员检查引用是否指向同一实例, 长答案: 类是引用类型,可能有多个常量和变量在幕后引用类的同一单个实例。类引用保留在运行时堆栈(RTS)中,其实例保留在内存的堆区域中。当您控制平等时, 这意味着它们的实例是否彼此相等。

  • 我编写了一个简单的脚本,它接受任意数量的参数来演示< code>$@和< code>$*之间的区别: 在我做的 CLI 上 这就是打印出来的 因为它们是相同的,这是否意味着等于?还是我遗漏了一点?

  • 问题内容: package main 该代码可以很好地工作。但是,如果按如下所示更改方法,则会导致死循环。区别在于将替换为。为什么? 问题答案: 因为程序包检查要打印的值是否具有方法(或换句话说:是否实现接口),如果是,则将调用它以获取值的表示形式。 软件包doc中对此进行了说明: […]如果操作数实现String()字符串方法,则将调用该方法将对象转换为字符串,然后根据动词的要求对其进行格式化(