POJO、JavaBean、EJB的区别

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的处理依然还是在服务器上进行运算再过来的,用户不过是看的到此对象的一些显性结果而已.


  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值