POJO、JavaBean、EJB的区别

来源:互联网 发布:域名注册购买 编辑:程序博客网 时间:2024/06/09 04:34
POJO
全称是 Plain Old Java Object,翻译为“纯洁老式的java对象”,一般都使用“简单java对象”来称呼。为什么这么说呢?原因是POJO类没有从任何类继承,也没有实现任何接口,更没有被其他框架侵入的java对象。POJO类只有一些private的参数作为对象的属性,然后针对每一个参数定义get和set方法访问的接口
package com.test;/** * 简单POJO类 *  * @author Nocol * */public class User {private String name;private String password;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
JavaBean
JavaBean 是一种JAVA语言写成的可重用组件。JavaBean符合一定规范编写的Java类,不是一种技术,而是一种规范。大家针对这种规范,总结了很多开发技 巧、工具函数。符合这种规范的类,可以被其它的程序员或者框架使用。它的方法命名,构造及行为必须符合特定的约定:

1、所有属性为private。

2、这个类必须有一个公共的缺省构造函数。即是提供无参数的构造器。

3、这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。

4、这个类应是可序列化的。实现serializable接口。

因为这些要求主要是靠约定而不是靠实现接口,所以许多开发者把JavaBean看作遵从特定命名约定的POJO
package com.test;import java.io.Serializable;/** * JavaBean * @author Nocol * */public class User1 implements Serializable {private static final long serialVersionUID = 1L;private String name;private String password;public User1() {super();// TODO Auto-generated constructor stub}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}/** * 定义其他方法 */public void test(){System.out.println("JavaBean 中的其他方法");}}

POJO和JavaBean两者有什么区别?

POJO其实是比javabean更纯净的简单类或接口。POJO严格地遵守简单对象的概念,而一些JavaBean中往往会封装一些简单逻辑POJO的格式是用于数据的临时传递,它只能装载数据, 作为数据存储的载体,而不具有业务逻辑处理的能力。而javabean虽然数据的获取与POJO一样,但是javabean当中可以有其它的方法。

EJB

EJB(Enterprise JavaBean)是一种javabean的组合规范。我们可以认为它是一组"功能"JavaBean的集合。上面说了JavaBean是实现了一种规范的Java对象。这里说EJB是一组JavaBean,的意思 是这一组JavaBean组合起来实现了某个企业组的业务逻辑。这里的一组JavaBean不是乱组合的,它们要满足能实现某项业务功能的搭配。

在 J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话 Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。

1.Session Bean用于实现业务逻辑。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。 这个类一般用单例模式来实现,因为每次连接都需要用到它。

2.Entity Bean是域模型对象,仅作为普通Java对象(POJO)来使用。用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象。

3.MessageDriven Bean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。

EJB与 JavaBean的区别 ?

JavaBean是一个组件,而EJB就是一个组建框架。JavaBean面向的是业务逻辑和表示层的显示,通过编写一个JavaBean,可以将业务逻辑的事件和事务都放在其中,然后通过它的变量属性将所需要的内容在表示层传递显示

运行EJB,你需要相应的EJB容器,比如Weblogic,Jboss等,而JavaBean不需要,只需要安装Tomcat就可以了。因此EJB可以看作是运行在EJB容器中的JavaBean。

EJB没有用户界面,完全位于服务器端,EJB可以多个JavaBean组成,规范说明详细说明了EJB容器需要满足的需求以及如何和EJB构件相互协作。EJB可以和远程客户端程序通信,并提供一定的功能,根据规范说明,EJB是Client/Server系统的一部分,如果不和客户端程序交互,EJB一般不执行具体的功能。EJB和JavaBean的一个重要区别是EJB提供了网路功能。

例子:
网络购物,虚拟购物车属于javabean,而定单处理属于ejb. 这里,虽然购物车的属性是用户可以看见的,但是实际上更新购物车的属性,比如有什么商品在其中,目前总价格统计,还是要放到服务器那处理的吧...那么我可能就直接将购物车写成一个JAVA对象,放在一个beans的包内,然后在action层中将购物车的bean信息给直接更新掉再发送回去.那么按此做法,实际上此javabean的处理依然还是在服务器上进行运算再过来的,用户不过是看的到此对象的一些显性结果而已.


原创粉丝点击