关闭

JavaBean,EJB,POJO汇总说明

标签: javabeanejb
119人阅读 评论(0) 收藏 举报
分类:

什么是JavaBean?

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 的属性。——百科定义

JavaBean特性


  1. 有一个public默认构造器(例如无参构造器,)
  2. 属性使用public 的get,set方法访问,也就是说设置成private,同时get,set方法与属性名的大小也需要对应。例如属性name,get方法就要写成,public String getName(){},N大写。
  3. 需要序列化。这个是框架,工具跨平台反映状态必须的。实现java.io.Serializable 接口

JavaBean最初是为Java GUI的可视化编程实现的.你拖动IDE构建工具创建一个GUI 组件(如多选框),其实是工具给你创建java类,并提供将类的属性暴露出来给你修改调整,将事件监听器暴露出来.《java 编程思想(第四版)》

补充:JavaBean最初是为定义可重用的应用组件而设计的,但当时他们却主要用作模型来构建用户界面窗口部件(user interface widgets)。

PO(plain object):用于持久化时(例如保存到数据库或者缓存);
VO(value object):用于前端展示使用(例如放置到JSP中解析或者给前端传递数据)
DTO(data transfer object):用于接口互相调用返回,数据传输(例如很多接口调用返回值或消息队列内容);
特别地,由于class不同,复制时一般推荐
https://github.com/springside/springside4/wiki

EJB

在企业开发中,需要可伸缩的性能和事务、安全机制,这样能保证企业系统平滑发展,而不是发展到一种规模重新更换一套软件系统。 然后有提高了协议要求,就出现了Enterprise Bean。EJB在javabean基础上又提了一些要求,当然更复杂了。

EJB的特性

一个技术规范:EJB 从技术上而言不是一种”产品”
EJB 是一种标准描述了构建应用组件要解决的:
可扩展 (Scalable)
分布式 (Distributed)
事务处理 (Transactional)
数据存储 (Persistent)
安全性 (Secure)

EJB的定义

EJB是Enterprise Java Bean 企业级JavaBean
EJB是遵守JavaBean规范的,也可以说是更加具体的JavaBean
EJB又分为SessionBean(会话Bean)、EntityBean(实体Bean)、MessageDriverBean(消息驱动Bean)
以下是它的定义:
EJB是一种服务器端的组件架构,它使得人们能够更加快捷、更加简便地开发分布式、支持事务的、安全的和可移植的Java应用系统。
①Java语言编写的
②服务器端企业级应用组件
③可分布式部署的组件
④一般用于封装企业应用的业务逻辑
基于组件的开发,其规范颁布了一组明确的EJB容器和EJB组件之间的契约,实现可移植性。
EJB组件在EJB容器中运行,EJB组件包含:EJB bean类、
EJB组件接口(远程接口)、EJB Home接口

POJO

POJO:“Plain Old Java Object”
EJB太复杂了,完全没必要每次都用,所以发明了个POJO,POJO是普通的javabean,什么是普通,就是和EJB对应的。
总之,区别就是,你先判断是否满足javabean的条件,然后如果再实现一些要求,满足EJB条件就是EJB,否则就是POJO。

POJO与JavaBean的区别

POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。

使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter、setter方法的类,没有业务逻辑,有时可以作为VO(value -object)或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。

POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。如果项目中使用了Hibernate框架,有一个关联的xml文件,使对象与数据库中的表对应,对象的属性与表中的字段相对应。

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对象,而不是一个特殊的对象,其主要用来指代那些没有遵从特定的Java对象模型、约定或框架(如EJB)的Java对象。理想地讲,一个POJO是一个不受任何限制的Java对象(除了Java语言规范)。

POJO是一个简单的普通的Java对象,它不包含业务逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。

多说一点:vo

vo有两种说法,一个是viewObject,一个是valueObject..就拿前者来说吧,它只负责封装页面传递过来的数据,这和PO有些不同..就拿struts1来说,ActionForm就是一个典型的viewObject. 而valueObject是页面与页面之间的传递时保存值的对象….总的来说,PO是最终传给BO以及BO传个DAO的东西,他很多情况下与我们真正的数据库表想对应.而viewObject是一个页面上提交后的数据,不一定完全和PO的属性相同
实际上没区别 他们的功能都一样 不过他们使用地点不一样

po是在持久层所使用的 用来封装原始数据 而VO则主要在视图层活动 两个JAVABEAN的使用范围不同 假如你从数据库取出来的原始数据 你可以通过业务层将数据进行封装 再通过VO发到页面上去

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:30228次
    • 积分:887
    • 等级:
    • 排名:千里之外
    • 原创:63篇
    • 转载:1篇
    • 译文:0篇
    • 评论:6条
    文章分类
    最新评论