表格型的关系型数据库与树型java对象之间的映射问题是一个至今争论不休的问题,好在现在已经有了一些好的解决方案。在本文中,我们将介绍ejb技术是怎样用自已特定的方式来解决这个问题的。
只要是涉及到保存及查询信息 ,那绝大多数应用程序都需要与关系数据库打交道。但由于关系数据库与java对象在结构上有着本质的区别,关于它们之间的映射关系对于那些java开发者们来说,是一个很令人头痛的问题。关系型数据库是以表格方式存储数据的,而java对象是以树型方式表现的。这种类型上的不匹配引发了各种各样的对象持久化解决方案,用来缩小关系世界与对象世界之间的鸿沟。ejb框架正是这种解决方案之一。
对象的持久性
目前有很多不同的工具出现,使得开发人员可以将java对象转化为数据库中的字段或记录,或者将数据库中的字段或记录还原为java对象。这些处理涉及到要将树型的java对象序列化到数据库中,反之亦然。此工作的核心是怎样在保证最小性能损失的前提下,来完成这项工作。
ejb框架提供了这样一个对象持久化机制。我们将在本文中讨论这种机制,但首先我们还是对ejb构架作一个全面的认识。
企业级javabeans(ejb)
ejb技术可以这样定义:它是一个基于java服务端的,为分布式应用提供的一个可复用的组件框架。所有的商业逻辑、部署定义、对象持久性都由这个框架统一管理,ejb框架的一些特色如下:
· ejb是一种运行在服务端环境下的java对象。
· ejb能分布在不同的机器上进行远程访问,但对客户端来而言,调用ejb与调用本地javabean一样方便。
· ejb容器对ejb进行统一管理。
尽管企业级javabean的名字与普通javabean在命名上有些相像,但它们在设计上有着本质上的区别。为了能让你更清楚地认识到这点,我们最好先了解一下ejb的基本概念、几种ejb组件模式和其配置环境。
ejb的运行环境
从本质上来说,ejb只是实现了特定接口的普通java对象,但这个对象必须运行在一个特定的环境:ejb容器中。如果脱离了ejb容器,ejb是无法运行的。ejb与ejb容器之间的关系有时候被称为"反向调用"――或者叫"好莱坞原理"(别联系我,到时候我会给你打电话的)。
ejb容器是一种用来管理ejb的运行时环境。它容纳并管理不同类型的ejb,这与java servlet容器管理servlet有些类似。ejb容器负责初始化ejb,并给其提供系统级的服务。
当客户端程序要调用某一个ejb时并不直接与ejb打交道,客户端与ejb被容器隔离起来。
ejb容器提供的服务
当开发者创建一系列的类与接口,用来组成一个ejb时,容器会为他们提供如下的系统级服务:
· 事务处理
· 安全管理
· ejb的持久化管理
· ejb的远程访问
· ejb的生命周期管理
· 数据库连接池
· ejb的实例池管理
由于ejb容器负责为ejb提供这种底层服务,使得一个ejb开发者只需关注具体应用的商业逻辑,从而减少了很多不必要的麻烦。
ejb的类型
ejb规范定义了以下三种不同类型的ejb类型:
· 消息驱动ejb(mdb)
· 会话ejb
· 实体ejb
当客户端与会话ejb或实体ejb交互时,它们的通信方式是同步通信。而消息驱动ejb(mdb)则只与jms进行交互,它相当于jms中的一个发布/订阅主题。
消息驱动ejb
消息驱动ejb工作在异步通信模式下。一个消息驱动ejb充当一个消息侦听者的角色,它侦听从jms的发布/订阅主题中传来的消息。
ejb容器管理着消息驱动ejb的生命周期,然而与会话ejb和实体ejb不同之处在于客户端并不能直接调用它的方法。消息驱动ejb是通过一个名为onmessage的回调函数来接收客户端的消息的。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器