`

EJB 技术的数据库应用

    博客分类:
  • EJB
阅读更多

一、J2EE 技术简介 
J2EE是 SUN 公司提出的在分布式环境中的一种体系结构,它提供了一种基于组件的设计、开发、集成、部署企业 应用系统的方法,J2EE平台提供了多层分布式的应用系统模型、重用组件的能力、统一的安全模型和灵活的事务控制。基于组件的J2EE企业应用系统具有平 台独立性,所以不受任何软件产品和任何软件厂家API的约束。 
J2EE定义了下面的组件:
· application client 和 applets 是客户层组件; 
· Java Servlet 和 JSP 组件是WEB 层组件;  
· Enterprise JavaBean(EJB) 组件是业务处理层组件。 
EJB 技术是J2EE 体系一部分,EJB 组件是用 Java 语言编写的,是可以被客户端程序存取的可重用的服务器端组件,它运行在J2EE 服务器上,在客户/服务器系统中,EJB 提供类似于中间件的服务。 
J2EE 服务器提供应用系统系统级的服务,像事务管理、安全管理、数据库存取等,开发人员不必自己开发系统级服务,所以可以集中精力开发应用系统中的业务逻辑处理;用EJB 组件处理业务逻辑。
二、EJB 组件简介
EJB 组件分为两类:Sesson bean 和 Entity bean
Sesson bean 代表 J2EE 服务器的客户端,客户端通过调用 Sesson bean 的功能和J2EE 服务器通信, Sesson bean 和客户会话,可以认为是客户端的扩展,例如:网上帐务系统的客户可以调用 Sesson bean 的"输入存款单"的功能来存 入现金等。每一个Sesson bean 只能有一个客户,当客户终止时,与之相应的Sesson bean 也终止。因此Sesson bean 是暂 时的,不可持久的。
Entity bean 代表业务处理对象,它存储在持久的存贮机制如数据库中,例如,一个Entity bean 代表 一个帐户存单,它是存储在关系数据库中存单表的一行。Entity bean 的信息不一定存储在关系数据库中,它也可以存储在对象数据库中、文件中或其 他别的存储机制中( 本例子中用关系数据库)。
Entity bean 可以被多个客户端共享。由于多个客户端可能改变相同的数据,所以 Entity bean 在事务管理下工作是很重要的。通常情况下,EJB 容器提供事务管理。开发人员可以在组件的部署描述文件中指定事务的属性。每一 个Entity bean 都有一个唯一的对象标识符,也叫主键,这个主键可以让客户端定位一个Entity bean。
Entity bean 的持久性可以被 Entity bean 自己管理,也可以让 EJB 容器管理,Entity bean自己管理要求开发人员 在Entity bean中提供数据存取代码。例如客户的Entity bean要调用 SQL 语句来通过 JDBC 存取关系数据库。EJB 容器管 理Entity bean持久性意味着 EJB容器自动处理数据存取的调用。

两种类型的EJB 组件(Session bean 和 Entity beans)都可以存取数据库。选择哪一类 EJB 组件来存取数据库依赖于具体的应用系统。
下面的情况可以在 Session bean 组件中调用 SQL 语句来存取数据库:
· 应用系统相对简单。
· SQL 语句返回的数据不能被多个客户端共享使用。
· 数据不代表一个业务实体。
下面的情况要用Entity beans 组件:
· 超过一个客户端使用数据库调用返回的数据。
· 数据代表一个业务实体。
· 开发者想从 Sesson bean 中隐藏关系模型。
EJB 结构的这种灵活性可以让开发人员用不同的方法来开发应用系统。
三、建立数据库连接
EJB 容器维护数据库的连接池,这个连接池对 EJB 组件来说是透明的。当EJB 组件申请一个连接时,EJB 容器从连接池中提取一个连接并分配 给组件。由于EJB 容器只是分配一个连接给 EJB 组件,所以组件很快就获得这个连接并连接数据库。数据库调用之后,组件就可以释放连接,这样它又可 以快速申请到另一个连接。又因为一个组件只占用这个连接很短的时间,从而同一个连接可以被多个组件使用。
组件不是通过数据库的绝对名来连接数据库,而是用逻辑名连接到数据库, 即用 JNDI lookup 来获得数据库连接,例如:在下面例子中的AccountEJB 类中,连接数据库有以下几个步骤:
1、指定数据库的逻辑名:
private String dbName = "java:comp/env/jdbc/AccountDB";
2、获得数据源:
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup(dbName);
3、从数据源得到数据库连接:
Connection con = ds.getConnection();
这种间接的连接数据库有以下几个优点:
· 可以在具有不同的数据库名的不同环境中部署相同的 EJB 组件。
· 可以在多个应用中重用EJB 组件。
· 可以集成 EJB 组件到运行在分布环境的应用系统中。
另外,EJB 规范没有要求 J2EE的实现支持某一个特别类型的数据库系统,因此EJB 组件可以连接到不同的数据库系统。四、EJB 数据库应用的 例子  下面以一个简单的例子 "银行帐户"应用系统来介绍 EJB 组件的Entity bean类型的组件存取数据库。  Entity bean 的状态存储在关系数据库的 ACCOUNT 表中,表ACCOUNT 由下面的SQL 语句创建:
CREATE TABLE ACCOUNT 
(id VARCHAR(3) CONSTRAINT pk_account PRIMARY KEY,
firstname VARCHAR(24),
lastname VARCHAR(24),
balance DECIMAL(10.2));
和其他EJB 组件一样,开发人员必须编写 Entity bean 的 Entity Bean Class 代码 (AccountEJB.java)、Home Interface 代码(AccountHome.java)及Remote Interface 代 码(Account.java)。
Entity Bean Class 代码( AccountEJB.java)
EntityBean 接口方法
EjbCreate 方法:当客户端调用 create 方法时,EJB 容器调用相应的ejbCreate 方法。一个Entity组件的ejbCreate 方法要实现下列工作:
· 插入Entity Bean 的状态到数据库中
· 初始化实例变量
· 返回主键。
AccountEJB的ejbCreate 方法调用insertRow 方法,而insertRow 方法发出一个 insert SQL 语句插入Entity Bean 的状态到数据库中,下面是 Account 类中ejbCreate 方法的源代码:

sublic String ejbCreate (String id,String firstName,String lastName,double balance)throw CreateException{ 
if (balance < 0.00)
{
throw new CreateException("A negative initial balance is not allowed.");    }    
try { 
insertRow(id,firstName,lastName,balance); 
} catch (Exception ex) {
throw new EJBException("ejbCreate:"+ex.getMessage());    }     this.id = id; 
this.firstName = firstName; 
this.lastName = lastName; 
this.balance = balance; 
return id;  }
分享到:
评论

相关推荐

    EJB技术及应用(课件与练习).rar

    **企业级JavaBeans (EJB) 技术详解** ...通过深入学习EJB技术,开发人员可以构建稳定、高效且可扩展的企业级应用,满足大规模、高并发的需求。同时,了解EJB也能为理解其他Java EE组件和现代云计算平台打下坚实基础。

    EJB技术及应用

    EJB技术是Java EE(Java Platform, Enterprise Edition)的一部分,它提供了服务器端的组件模型,允许开发者创建可重用的业务逻辑,这些组件可以被部署到支持EJB的Java应用服务器上。 **EJB类型** 1. **会话Bean ...

    Java程序设计EJB、XML与数据库

    综合上述技术,开发者可以构建强大的企业级应用,通过EJB处理业务逻辑,利用XML进行数据交换,而数据库则作为存储和检索数据的基石。学习这些技术需要不断实践和深入理解,以应对各种复杂的开发需求。在实际项目中,...

    基于Java开发的EJB技术应用探究 (1).pdf

    基于Java开发的EJB技术应用探究 EJB技术概述 EJB(Enterprise JavaBean)技术是一种基于Java语言的企业级组件模型,用于开发企业级应用程序。EJB技术的设计目标是提供一个规范,帮助企业和应用开发人员实现后台...

    EJB_JPA数据库持久层开发详解

    其中,**Java Persistence API (JPA)** 是一种基于ORM技术的标准规范,它提供了一种用于管理Java应用程序中的对象关系映射的方法,使得Java开发人员能够更高效地处理数据库交互。 **JPA**是在EJB3.0规范中引入的,...

    EJB技术及应用(课件与练习)

    在实际应用中,EJB技术通常与其他Java EE技术结合使用,如JSP和Servlet处理前端展示,JDBC进行数据库操作,JMS进行消息通信等。EJB的灵活性和强大的功能使其在大型企业应用中占据重要地位,但也因其相对复杂的使用...

    EJB概述(下) Java数据库 操作

    ### EJB概述(下): Java数据库操作 ...通过对Application Assembler、EJB Beans提供者以及其他相关角色的理解,我们可以更好地把握EJB的技术特点和应用场景,进而有效地利用EJB技术来构建高性能、高可靠性的企业级应用。

    EJB技术及应用(课件与练习)

    "**EJB技术及应用(课件与练习)**"这个压缩包可能包含了关于EJB的详细讲解、示例代码、实战练习等内容,帮助学习者深入理解和掌握EJB技术,通过实践巩固理论知识,提升在实际项目中的应用能力。

    EJB+JPA数据库持久层开发实践详解PDF

    本实践详解主要围绕这两者在数据库持久层的开发应用,帮助开发者深入理解并掌握相关技术。 EJB是Java EE(Enterprise Edition)的一部分,它提供了一种标准的方式来创建可重用的、跨平台的服务器端组件。EJB组件...

    EJB核心技术及其应用

    ### EJB核心技术及其应用 ...综上所述,EJB技术通过定义明确的角色分工、提供高度抽象化的接口和组件、以及标准化的服务层,大大降低了企业级应用的开发复杂度,同时也提高了应用的可维护性和可扩展性。

    EJB应用开发详解

    EJB应用开发详解涵盖了这一技术的各个方面,旨在帮助开发者深入理解和熟练掌握EJB的使用。 **1. EJB概述** EJB是Java EE(Java Platform, Enterprise Edition)的一部分,它提供了一种标准的组件模型,让开发者可以...

    基于MVC设计模式构筑JSPServlet+EJB的Web应用

    在这个案例中,作者展示了如何使用MVC模式结合JSP/Servlet+EJB技术来开发这样一个系统。具体来说,他们是如何将各个部分有效地整合在一起,以实现系统的功能需求,并确保良好的性能和可扩展性。 #### 结论 综上所...

    JAVA程序设计 EJB、XML与数据库

    《JAVA程序设计 EJB、XML与数据库》这本书深入探讨了Java编程中三个核心领域的关键概念和技术,包括Enterprise JavaBeans(EJB)、XML以及数据库交互。这些主题在现代企业级应用开发中占据了至关重要的地位。 首先...

    EJB技术介绍

    EJB技术自1999年首次推出以来,一直在Java企业应用开发中扮演着重要角色,它为开发者提供了一种标准的方式来创建分布式、组件化的业务逻辑。 **EJB的概念** EJB是一种服务器端组件模型,它定义了企业级对象如何在...

    EJB技术的体系结构

    EJB技术的体系结构由Sun Microsystems公司设计并制定规范,旨在提供一种组件化开发模式,允许开发者专注于业务逻辑,而将底层的复杂性如安全性、事务管理、远程连接和生命周期管理等交给EJB容器来处理。 EJB技术的...

    EJB技术代码样例

    学习EJB技术,不仅需要理解上述概念,还需要实践编写和部署bean,熟悉服务器(如WebLogic、GlassFish等)的配置,以及如何在客户端应用中调用EJB服务。通过深入研究提供的代码样例,你可以更好地掌握EJB在实际项目中...

    EJB的应用详细讲解及案例

    虽然EJB在过去是企业级Java应用的标准,但随着技术的发展,Spring框架的崛起,以及微服务架构的流行,EJB的使用逐渐减少。然而,EJB的理念和一些核心机制(如依赖注入、事务管理)仍然影响着现代Java开发。 总的来...

    Java程序设计 EJB、XML与数据库

    Java程序设计涵盖了广泛的领域,包括Enterprise JavaBeans (EJB)、XML以及数据库的使用。这三大技术在构建大型、分布式的企业级应用中起着至关重要的作用。以下是对这些知识点的详细说明: 1. **Enterprise ...

Global site tag (gtag.js) - Google Analytics