POJO / JavaBean / Entity Bean

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的,不知道对不对?

时间: 2024-10-09 23:48:08

POJO / JavaBean / Entity Bean的相关文章

Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分

PO:持久对象 (persistent object),po(persistent object)就是在Object/Relation Mapping框架中的Entity,po的每个属性基本上都对应数据库表里面的某个字段.完全是一个符合Java Bean规范的纯Java对象,没有增加别的属性和方法.持久对象是由insert数据库创建,由数据库delete删除的.基本上持久对象生命周期和数据库密切相关. VO:值对象(Value Object),通常用于业务层之间的数据传递,和PO一样也是仅仅包含

Java Bean、POJO、 Entity、 VO 、PO、DAO

Java Bean.POJO. Entity. VO , 其实都是java 对象,只不过用于不同场合罢了. Java Bean: 就是一个普通的Java 对象, 只不过是加了一些约束条件.  声明的 property 是 private 的, 并且,实现了 Get 和set 方法. POJO:  Plain Old Java  Object . 一个普通的对象而已: Entity: 实体的意思. 在访问数据库时,才声明 Entity. 说白了, 一个Entity 就是对应表中的一条记录. 当 i

Java中几种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)

一.j2ee中,经常提到几种对象(object),理解他们的含义有助于我们更好的理解面向对象的设计思维. ORM是Object Relational Mapping[对象关系映射]的缩写 通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据.在O/RMapping的世界里, 有一系列的重要对象,常见的有VO,PO,DTO,POJO,DAO,BO. 1.Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分 (一).POJO(

EJB学习(四)——Enterprise Bean(企业Bean)和Entity Bean(实体Bean)

    一.为什么使用EJB ? 企业Bean运行在EJB容器中,企业Bean实际上就是一个封装了业务逻辑的Java类,那么我们为什么要使用EJB呢 ? 1.最重要的原因:分布式.简要的说,分布式可以将分布在各处的资源综合利用,但是对于用户来说展现的是一个统一的整体:分布式可以动态分配任务,分散物理的和逻辑的资源,从而提高执行效率:分布式技术可以避免由于单个节点失效而使整个系统崩溃的危险. 2.分布式对象之间的事务支持,RMI(Remote Method Invocation,远程方法调用)不支

【进阶EJB】深入探讨三种Bean(二)——Entity Bean

通过上一篇文章,我们介绍了[进阶EJB]深入探讨三种Bean(一)--Session Bean,这篇文章继续介绍EJB的三种Bean,今天我们重点介绍一下Entity Bean. Entity Bean,通过名字我们就知道是实体Bean是存放数据的.Entity Bean是持久化的数据组件,代表持久存储的商业实体对象.通常情况下,每个Entity Bean对应于关系数据库中的单张表,Entity Bean的单个实例对应于表中的某一条数据.上篇文章中说的Session Bean可作为Entity

EJB学习(六)——Entity Bean 和 Hibernate的比较

在学习EJB的Entity Bean这一块的时候,感觉它和Hibernate是一样一样的,把当初总结Hibernate的导图找了出来,经过对比,感觉两个几乎是差不错的,下面就在Hibernate的基础上理解下EJB的Entity Bean. 我们通过上面的导图来对Entity Bean和Hibernate做个比较: 1.Hibernate中的全局配置文件hibernate.cfg.xml和Entity Bean中的persistence.xml Hibernate的hibernate.cfg.x

Web---JSP注册技术的的演绎(3代)-JSP/EJB/Servlet/POJO/JavaBean

我们可以这么理解JSP注册技术的发展过程: 第一代JSP技术:纯JSP开发. 第二代JSP技术:JSP+EJB开发. (EJB简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行.) 第三代JSP技术:JSP+Servlet+POJO开发.(**MVC框架) (POJO其实就是简单的JAVA类,也是简单的JavaBean(特殊的值对象封装)) 其实EJB-可理解成企业级的JavaBean(相对于简单的JavaBean增加了一些业务处理方法) 现在还有更新的技术,目前还没学到,学到后会第一

了解vo pojo javabean dto

1什么是vo. (1.VO是用new关键字创建,由GC回收的 PO是向数据库中添加新数据时创建,删除数据库中的数据时削除的.并且只能存活在一个数据库连接中,断开连接即被销毁 (2.VO是值对象,业务对象,存活在业务层,是业务逻辑使用的,存活的目的就是为数据提供一个生存的地方.PO则是有状态的,每个属性代表其当前的状态.它是物理数据的对象表示.使用它,可以使我们的程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换. (3.VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都

JAVA vo pojo javabean dto的区别

JavaBean 是一种JAVA语言写成的可重用组件.为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性.众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 的属性. VO即value object值对象主要体现在视图的对象,对于一个WEB页面将整个页面的属性封装成一个对象.然后用一个VO对象在控制层与视图层进行传输交换. DTO (经过处理后的PO,可能增