`

POJO和JavaBean的区别和联系

    博客分类:
  • JAVA
 
阅读更多

POJO 和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Pure Old Java Object,中文可以翻译成:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比 POJO复杂很多, Java Bean 是可复用的组件,对 Java Bean 并没有严格的规范,理论上讲,任何一个 Java 类都可以是一个 Bean 。但通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat) 的,所以 Java Bean 应具有一个无参的构造器,另外,通常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久性。 Java Bean 是不能被跨进程访问的

JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被拿去用,这个扳子也提供多种功能(你可以拿这个扳子扳、锤、撬等等),而这个扳子就是一个组件。
一般在web应用程序中建立一个数据库的映射对象时,我们只能称它为POJO。

 

POJO(Plain Old Java Object)这个名字用来强调它是一个普通java对象,而不是一个特殊的对象。2005年11月时,“POJO”主要用来指代那些没用遵从特定的Java对象模型,约定或框架如EJB的Java对象.理想地讲,一个POJO是一个不受任何限制的Java对象(除了Java语言规范)。例如一个POJO不应该是

  1. 扩展预定的类,如       public class Foo extends javax.servlet.http.HttpServlet { ...
  2. 实现预定的接口,如   public class Bar implements javax.ejb.EntityBean { ...
  3. 包含预定的标注,如   @javax.ejb.Entity public class Baz{ ...

然后,因为技术上的困难及其他原因,许多兼容POJO风格的软件产品或框架事实上仍然要求使用预定的标注,譬如用于更方便的持久化。 JavaBean 是一种JAVA语言写成的可重用组件。它的方法命名,构造及行为必须符合特定的约定:

  1. 这个类必须有一个公共的缺省构造函数。
  2. 这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。
  3. 这个类应是可序列化的。 

因为这些要求主要是靠约定而不是靠实现接口,所以许多开发者把JavaBean看作遵从特定命名约定的POJO。 简而言之,当一个Pojo可序列化,有一个无参的构造函数,使用getter和setter方法来访问属性时,他就是一个JavaBean。

我的整理与总结: 一、对于java bean,就是一个java模型组件,他为使用java类提供了一种标准的格式,在用户程序和可视化管理工具中可以自动获得这种具有标准格式的类的信息,并能够创建和管理这些类。  java bean 可以使应用程序更加面向对象,可以把数据封装起来,把应用的业务逻辑和显示逻辑分离开,降低了开发的复杂程度和维护成本! JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBeans 通过提供符合一致性设计模式的公共方法将内部域暴露称为属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 属性。
从编程的角度,也就是最基本的实现了get跟set方法的类。
二、Enterprise Bean,也就是Enterprise JavaBean(EJB),是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。    在 J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话 Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。      1.Session Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。 这个类一般用单例模式来实现,因为每次连接都需要用到它。     2.Entity Bean是域模型对象, 用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个 Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。       Java Persistence 1.0规范中的entity bean仅作为普通Java对象(POJO)来使用,并且是映射到关系数据库表的。与其他类型的EJB不同,entity bean可以被分配,序列化,并像任何其他POJO那样通过网络被发送出去。     3.MessageDriven Bean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。     三、Enterprise Bean 与 JavaBean的区别 最 初,JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用与帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。这些包 括如Grid控件,用户可以将该部件拖放到开发环境中。从此,JavaBean就可以扩展为一个java web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的 Bean(EJB)。    JavaBean 和 Server Bean(通常称为 Enterprise JavaBean (EJB))有一些基本相同之处。它们都是用一组特性创建,以执行其特定任务的对象或组件。它们还有从当前所驻留服务器上的容器获得其它特性的能力。这使 得 bean 的行为根据特定任务和所在环境的不同而有所不同。 JavaBean 是使用 java.beans 包开发的,它是 Java 2 标准版的一部分。JavaBean 是一台机器上同一个地址空间中运行的组件。JavaBean 是进程内组件。Enterprise Bean 是使用 javax.ejb 包开发的,它是标准 JDK 的扩展,是 Java 2 Enterprise Edition 的一部分。Enterprise Bean 是在多台机器上跨几个地址空间运行的组件。因此 Enterprise Bean 是进程间组件。JavaBean 通常用作 GUI 窗口小部件,而 Enterprise Bean 则用作分布式商业对象.   四、POJO一个正规的Java对象(不是JavaBean,EntityBean等),也不担当任何的特殊的角色,也不实现任何Java框架指定的接口。POJO是一个简单的、正规Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。  POJO 应该不是我们开始认为的JavaBean,当然更不是EJB,它不应该依赖于框架即继承或实现某些框架类或接口。例如:Struts1中的Action和 ActionForm当然不属于POJO了,而在Struts2中的Action由于可以不继承任何的接口,所以在这种情况下Action是POJO,但 是Struts2中的Action也可以继承ActionSupport类就不再属于POJO了。POJO里面是可以包含业务逻辑处理和持久化逻辑,也可 以包含类似与JavaBean属性和对属性访问的set和get方法的。    在百度百科上的解释是:简 单的Java对象(Plain Ordinary Java Objects)实际就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,有时可以作为value object或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。 

   POJO是Plain Ordinary Java Objects的缩写不错,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。 而我的理解是:POJO 跟Entity Bean的区别仅在于Entity Bean必须要映射到数据库里,而POJO仅用于业务逻辑,当然也可以映射到数据库中,也就是Entity Bean是POJO的特例,当然它们是不同的标准中的,个人认为Entity Bean是基于POJO的,不知道对不对?

分享到:
评论

相关推荐

    通过实例解析POJO和JavaBean的区别

    "通过实例解析POJO和JavaBean的区别" POJO(Plain Ordinary Java Object)是指普通的Java类,具有一部分getter/setter方法的那种类。它们的特点是支持业务逻辑的协助类,方便程序员使用数据库中的数据表,对于...

    pojo类与javaBean

    在Java开发领域,POJO类与JavaBean是两个常被提及的概念,它们在软件设计和编码实践中扮演着重要角色,尤其在构建可扩展性和维护性高的系统时更是不可或缺。理解它们之间的差异对于深入掌握Java编程具有重要意义。 ...

    json2javabean josnschema2pojo

    JSON到Java Bean转换工具,如"json2javabean"和"josnschema2pojo",是开发人员在处理JSON数据与Java对象之间转换时的便利工具。这些工具能够根据JSON格式的数据自动生成对应的Java类,使得数据绑定变得更加简单和...

    pojo生成器

    POJO和JavaBean都是对象模型的实现方式,"model"在这里通常指的是业务逻辑层的数据模型,是应用程序中用于封装数据的对象。 至于“tools”这个文件名,很可能是指该压缩包中包含了一个工具包或程序,这个工具包可能...

    jsp、servlet、javaBean区别.doc

    JavaBean通常被视为Plain Old Java Object (POJO),不依赖于任何特定的框架或接口,只需提供getter和setter方法来访问和修改其内部状态。JavaBean的状态可以在四种作用域中管理:application、session、request和...

    【IT十八掌徐培成】Java基础第04天-05.构造代码块-构造函数-javabean-pojo.zip

    在这个【IT十八掌徐培成】的课程中,我们重点关注了Java基础知识的第四天内容,主要讲解了构造代码块、构造函数以及JavaBean和POJO的概念。下面我们将深入探讨这些关键知识点。 首先,构造代码块是在类中定义的一段...

    数据表生成pojo

    - POJO类应遵循JavaBean规范,提供默认构造函数以及getter和setter方法。 - 需要处理特殊数据类型,如日期、枚举等,确保数据转换正确无误。 - 当数据库表结构变化时,记得同步更新对应的POJO类。 综上所述,...

    javabean实例源码

    6. **扩展知识**:JavaBean与POJO(Plain Old Java Object)的区别。POJO是一种更通用的概念,任何不依赖特定框架的简单Java对象都可以称为POJO。而JavaBean则是一种遵循特定规范的POJO,通常用于组件开发和数据封装...

    Javabean与DTO的区别.docx

    总结一下,JavaBean、DTO、POJO和PO各有其特定的用途: - JavaBean主要用于封装业务逻辑和数据,方便在JSP中使用,同时也适用于代码复用。 - DTO专注于数据传输,不包含业务逻辑,常用于系统间的数据交换。 - POJO是...

    json自动生成javabean的工具jar

    4. **Jsonschema2pojo**:这是一个在线工具,也提供命令行版本,可以根据JSON Schema生成JavaBean。只需要输入JSON结构,它就能自动生成符合该结构的Java类。 5. **AutoValue**:这是Google推出的一个用于创建简单...

    JavaBean getset

    POJO是Java社区中对简单Java对象的非正式术语,它没有特定的框架或库依赖,但JavaBean可以看作是具有getter和setter的POJO,遵循特定的规范,常用于数据交换或持久化。 总结,JavaBean中的get和set方法是实现数据...

    javabean内容.rar

    随着Java技术的发展,出现了许多现代替代方案,如POJO(Plain Old Java Object)和JavaFX的Properties API,它们在保持简单性的同时提供了更多灵活性。 总之,JavaBean是Java编程中的一个基础概念,它简化了数据...

    JavaBean的基本知识

    ### JavaBean的基本知识 #### 一、JavaBean简介与应用场景 JavaBean是一种符合特定规范的Java类,主要用于封装数据和业务逻辑。...理解和掌握JavaBean的相关知识,对于提高开发效率和质量都具有重要意义。

    eclipse插件,根据数据库表自动生成DTO(pojo)插件

    生成的DTO和POJO类可能符合JavaBean规范,方便在各种Java应用中使用。 在压缩包中,`plugin.xml`文件是Eclipse插件的核心配置文件,它定义了插件的元数据,如插件ID、依赖项、提供的功能和命令等。`icons`目录可能...

    javaBean-servlet-jsp开发的通讯录

    在Java Web中,Model通常由JavaBean(也称为POJO,Plain Old Java Object)实现,负责业务逻辑和数据存储;Servlet作为Controller处理HTTP请求,并与Model和View交互;JSP(JavaServer Pages)作为View,用于展示...

    班级综合评价系统javabean

    现代框架如Spring提倡使用POJO(Plain Old Java Object)和依赖注入,以提高灵活性和可测试性。 综上所述,"班级综合评价系统javabean"可能是由一系列JavaBean构成,它们各自封装了系统中的关键数据和逻辑,通过...

    mybatis逆向工程自动生成javabean

    这个压缩包文件"mybatis逆向工程自动生成javabean"显然包含了实现这一功能的相关配置和脚本。 首先,我们需要了解MyBatis逆向工程的基本概念。MyBatis逆向工程(MyBatis Generator,MBG)是MyBatis框架的一个插件,...

    mysql自动生成javaBean和dao代码

    MySQL数据库的自动化代码生成是开发过程中的一大效率提升工具,尤其在Java Web开发中,它可以显著减少手动编写数据访问对象(DAO)和实体类(通常称为POJO,Plain Old Java Object)的工作量。在这个场景中,我们...

Global site tag (gtag.js) - Google Analytics