由于是创业公司,开发人员较少,所以公司临时决定让几个C的程序猿临时客串Java。所以避免不了有很多基础问题,今天就有两个人都问我,JavaBean和POJO的区别,我可按照自己的理解给他们大致说了下,可是仔细一推敲发现自己好像没有那么透彻的讲解很清楚,就查了下资料,记下了一些笔记和理解。

1.JavaBean

  JavaBean(官方解释)是可复用的Java组件,严格遵循Sun定义的规范要求,JavaBean是一个标准,开发者可以直接复用别人写好软件组件而不必理解它内部的工作机制。简单来说一个JavaBean应该有下面几个特点,

  >类应该是public的

  >属性应该private的,对于属性值的访问应该是要通过getXX,setXX,isXXX方法,isXXX是用于检查元素的值是否是Boolean的。

  >该类应该有一个无参的构造函数,元素值的初始化要通过setXXX方法。

  >这个类应该是实现了Serializable 接口(java.io.Externalizable),这个是为了持久化存储的需要。

 例如:

package com.example;

import java.io.Serializable;

public class Bar implements Serializable {

    private String name = null;

    private boolean flag = false;

    public Bar() {
} public String getName() {
return this.name;
} public void setName(final String name) {
this.name = name;
} public boolean isFlag() {
return this.flag;
} public void setFlag(final boolean flag) {
this.flag = flag;
}
}

 2.EJB(Enterprise Java Bean)

  EJB是运行在一个J2EE服务器上的Java类,它用于处理业务逻辑的,应该是这样的:

   >有状态(Stateful)

   >无状态的(Stateless)

     >实体(Entity)

   >消息驱动Bean(Message Driven Beans)

举例(无状态Bean):

 

@Stateless
public class EmployeeServiceBean {
@PersistenceContext
EntityManager em; public void addEmployee(Employee emp) {
em.persist(emp);
}
} Read more: http://www.javaexperience.com/difference-between-pojo-javabean-ejb/#ixzz3otv2sKDE

  说明:因为EJB2.0和EJB被要求是实现EJBobject 接口和指明EJB的部署类型,所以在EJB3.0中引入了注解来简化开发步骤。

3.POJO(Plain Old Java Object)

  一个POJO没有要求去实现了一个接口或者继承一个类,也没有任何的指导信息。POJO最大的不同之处就是它和EJB无关。Java是一个简化的JavaBean,我们之所以叫它是是简化的bean是因为它只用于装载数据而不用业务逻辑的处理。一个持久化的POJO就是PO,如果用于展示层那么它就是VO .

4.扩展

4.1.PO(persistant object ):持久化对象

  持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。

4.2.VO(Value Object)

  一个值对象就是一个含有值的对象,比如java.lang.Integer.VO:通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。

4.3.DAO:data access object

  数据访问对象,是一个sun的一个标准j2ee设计模式 .此对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作。夹在业务逻辑与数据 库资源中间。配合VO, 提供数据库的CRUD操作。

4.4.DO(Domain Object

  领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。

4.5.VO(View Object

  视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。

4.6. BO( Business object)

  用于调用DAO的业务逻辑类,并且将PO和VO联合起来进行业务操作。

4.7.DTO(Data Transfer Object)

  主要用于远程调用中的传输对象。比如说,一个100个字段的表就对应于PO中的100个属性,但是我们的接口只需要10个字段。那么我们就可以将只含有十个字段的DTO传递给客户端使用。这不会向客户端暴露表结构,一旦它和接口关联起来,那么它就是VO了。

Java 之JavaBean 、EJB 和POJO的更多相关文章

  1. JavaBean , EJB , spring , POJO

    1996年 , 发布了java bean 1.00-A  当时的java bean有什么用呢 javaBean最初是为Java GUI的可视化编程实现的.你拖动IDE构建工具创建一个GUI 组件(如多 ...

  2. JavaBean,EJB,POJO,Spring Bean 的演进历程

    JavaBean Sun公司对类提出的规范:1,类是public的2,有一个无参构造方法3,属性修饰要用private,通过get set操作4,实现Serializable接口5,对事件使用Swin ...

  3. javaBean、EJB、POJO

    1.JavaBean 最初是由 Sun 公司提出的一种规范,主要包含以下要求: ----类是 public 的,并且有一个无参数的构造函数 ----属性修饰符为:private,并通过 get 和 s ...

  4. JavaBeans、EJB和POJO详解

    转自:http://developer.51cto.com/art/200906/130814.htm J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种轻易理解的角 ...

  5. Java (PO,VO,DAO,BO,POJO,DTO) 几种对象解释

    1. PO:persistant object 持久对象 可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对 ...

  6. ejb 和pojo , jboss 和 tomcat

    EJB(企业JavaBeans)是普通JavaBeans的一种提升和规范,因为企业信息系统开发中需要一个可伸缩的性能和事务.安全机制,这样能保证企业系统平滑发展,而不是发展到一种规模重新更换一套软件系 ...

  7. Java高新技术 JavaBean内省

     Java高新技术  JavaBean内省 知识概要:                 (1)了解JavaBean内省                 (2)JavaBean的简单内省操作     ...

  8. JAVA中JavaBean对象之间拷贝的方法

    JAVA中JavaBean对象之间的拷贝通常是用get/set方法,但如果你有两个属性相同的JavaBean或有大部分属性相同的JavaBean,有个更简便的方法,他们之间的拷贝可以通过copyPro ...

  9. JAVA中JavaBean对象之间属性拷贝的方法

    JAVA中JavaBean对象之间的拷贝通常是用get/set方法,但如果你有两个属性相同的JavaBean或有大部分属性相同的JavaBean,对于这种情况,可以采用以下几个简便方法处理. 下面对这 ...

随机推荐

  1. OC本学习笔记Foundatio框架集

        一.OC数组         OC数组是一个类,它也分不可变数组NSArray和可变数组NSMutableArray. 1➣不可变数组的创建 // 创建一个不可变数组.元素为一个OC字符串对象 ...

  2. AFNetworking框架_上传文件或图像server

    的文本 XXXXXXXXXX在自己的论点更填写 - (void)uploadImageWithImage:(NSString *)imagePath { //上传其它所需參数 NSString *us ...

  3. Visual Studio Team Services使用教程--Readers tfs组成员添加

  4. 恢复Ubuntu引导菜单

    介绍 当使用双系统,我们经常重Windows! 有没有一种方法:刚刚重装Windows而不重装Ubuntu呢? 在使用Win XP/Ubuntu双系统时.这个问题非常好解决!可是在使用Win7(包括V ...

  5. boostrap-非常好用但是容易让人忽略的地方------modal

    使用bootstrap框架好久了,在开发中也用到了或者遇到了很多的问题,所以跟大家分享一下 bootstrap modal 组件的样式 .modal-lg .modal-sm 说明:这个是bootst ...

  6. 网络语音视频技术浅议 Visual Studio 2010(转)

    我们在开发实践中常常会涉及到网络语音视频技术.诸如即时通讯.视频会议.远程医疗.远程教育.网络监控等等,这些网络多媒体应用系统都离不开网络语音视频技术.本人才疏学浅,对于网络语音视频技术也仅仅是略知皮 ...

  7. ubuntu安装jdk eclipse mysql等

    linux ubuntu下安装java web开发环境,需要安装包: jdk7 eclipse(选择java EE developer) apche-tomcat mysql(workbench可视化 ...

  8. matlab入门 蜂窝阵列

    B{1,1}=[1,2]; B{1,2}='kitty'; B B = [1x2 double]    'kitty' celldisp(B) B{1} =      1     2 B{2} =   ...

  9. NSIS:在线下载并安装程序

    原文 NSIS:在线下载并安装程序 看到有同学留言说需要这方面的代码,所以贴出以下代码供参考(非完整脚本).需要用NSISdl插件. Section -.NET Framework    NSISdl ...

  10. Codeforces Round #271 (Div. 2) E题 Pillars(线段树维护DP)

    题目地址:http://codeforces.com/contest/474/problem/E 第一次遇到这样的用线段树来维护DP的题目.ASC中也遇到过,当时也非常自然的想到了线段树维护DP,可是 ...