欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

POJO、JavaBean、EJB的区别

程序员文章站 2022-06-15 12:05:46
...
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的处理依然还是在服务器上进行运算再过来的,用户不过是看的到此对象的一些显性结果而已.