⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 10.html

📁 写给JSP初级程序员的书
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<meta name="description" content="Java,JDBC,EJB,Open Source,jdk,rmi">
<meta name="Keywords"
content="Java, servlets, Java servlet, Javascript, ActiveX, VRML,
        applet, applets, directory, news, jdbc, applications, 
        Java applications, Java developer, Java development, developer, 
        classes, Jars.com, Jars, intranet, Java applet, Javabeans, 
        Java products, JDK, Java development kit, java development environment, JIT,
        JavaPlan, enterprise tools, JVM, Java Virtual Machine, Java resources, 
        SUN, CGI, Perl, database, network, html,
        xml, dhtml, rating, ratings, review, jars, cgi, programming,
        software review, software rating">
<title>csdn_EJB 技术的数据库应用 </title>
<style>
.news {   BACKGROUND: #007cd3;  font-family: "宋体"; font-size: 9pt }
.t {  font-family: "宋体"; font-size: 9pt }
.t1 { color:#007cd3;  font-family: "宋体"; font-size: 9pt }
.white { font-family: "宋体"; font-size: 9pt;color:#FFFFFF }
.red { font-family: "宋体"; font-size: 9pt;color:#FF0000 }
A:visited {color:#0000FF}
A:hover {color: #ff6666; text-decoration: none}
.text {font-size: 12px; line-height: 160%; font-family: "宋体"}
.text1 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text1:visited {color:#000000}
.text1:hover {color: #000000}
.text2 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text2:visited {color:#000000}
.text2:hover {color: #000000}
.text3 {font-size: 12px; line-height: 100%; font-family: "宋体"; text-decoration: none}
.large {font-size: 14.8px; line-height: 130%}
</style>
</head>

<body


<center>




  <tr>
    <td WIDTH="100%" VALIGN="TOP">
      <tr>
        <td WIDTH="100%" CLASS="white"></td>
      </tr>
    
      <tr>
        <td WIDTH="50%" bordercolor="#FFFFFF" CLASS="t1" bgcolor="#F0F0F0" align="center" nowrap>EJB 技术的数据库应用   </td>
     <p>   <td WIDTH="50%" bordercolor="#FFFFFF" CLASS="t1" bgcolor="#F0F0F0" align="center" nowrap>作者:luoyz 来源 emook</p>
</td>
      </tr>
      <tr>        <td WIDTH="100%" bordercolor="#FFFFFF" CLASS="t" bgcolor="#F0F0F0" colspan="2">
              <P><FONT color=#386490><BR><SPAN class=line><B>一、J2EE 
      技术简介</B><BR><BR>  J2EE是 SUN 
      公司提出的在分布式环境中的一种体系结构,它提供了一种基于组件的设计、开发、集成、部署企业应用系统的方法,J2EE平台提供了多层分布式的应用系统模型、重用组件的能力、统一的安全模型和灵活的事务控制。基于组件的J2EE企业应用系统具有平台独立性,所以不受任何软件产品和任何软件厂家API的约束。</SPAN></FONT></P>
      <P class=line><FONT color=#386490>  J2EE定义了下面的组件:<BR>  · application 
      client 和 applets 是客户层组件;<BR>  · Java Servlet 和 JSP 组件是WEB 层组件;<BR>  · 
      Enterprise JavaBean(EJB) 组件是业务处理层组件。</FONT></P>
      <P class=line><FONT color=#386490>  EJB 技术是J2EE 体系一部分,EJB 组件是用 Java 
      语言编写的,是可以被客户端程序存取的可重用的服务器端组件,它运行在J2EE 服务器上,在客户/服务器系统中,EJB 
      提供类似于中间件的服务。</FONT></P>
      <P class=line><FONT color=#386490>  J2EE 
      服务器提供应用系统系统级的服务,像事务管理、安全管理、数据库存取等,开发人员不必自己开发系统级服务,所以可以集中精力开发应用系统中的业务逻辑处理;用EJB 
      组件处理业务逻辑。<BR><BR><B>二、EJB 组件简介</B><BR><BR>  EJB 组件分为两类:Sesson bean 和 
      Entity bean<BR>  Sesson bean 代表 J2EE 服务器的客户端,客户端通过调用 Sesson bean 的功能和J2EE 
      服务器通信,Sesson bean 和客户会话,可以认为是客户端的扩展,例如:网上帐务系统的客户可以调用 Sesson bean 
      的"输入存款单"的功能来存入现金等。每一个Sesson bean 只能有一个客户,当客户终止时,与之相应的Sesson bean 
      也终止。因此Sesson bean 是暂时的,不可持久的。</FONT></P>
      <P class=line><FONT color=#386490>  Entity bean 
      代表业务处理对象,它存储在持久的存贮机制如数据库中,例如,一个Entity bean 
      代表一个帐户存单,它是存储在关系数据库中存单表的一行。Entity bean 
      的信息不一定存储在关系数据库中,它也可以存储在对象数据库中、文件中或其他别的存储机制中( 本例子中用关系数据库)。<BR>  Entity bean 
      可以被多个客户端共享。由于多个客户端可能改变相同的数据,所以Entity bean 在事务管理下工作是很重要的。通常情况下,EJB 
      容器提供事务管理。开发人员可以在组件的部署描述文件中指定事务的属性。<BR>每一个Entity bean 
      都有一个唯一的对象标识符,也叫主键,这个主键可以让客户端定位一个Entity bean。<BR>  Entity bean 的持久性可以被 
      Entity bean 自己管理,也可以让 EJB 容器管理,Entity bean自己管理要求开发人员在Entity 
      bean中提供数据存取代码。例如客户的Entity bean要调用 SQL 语句来通过 JDBC 存取关系数据库。EJB 容器管理Entity 
      bean持久性意味着 EJB容器自动处理数据存取的调用。 <BR>  Sesson bean 和 Entity 
      bean对比如下:<BR>  <IMG height=158 src="ejb1.gif" tppabs="http://www.chinajavaworld.com/doc/ejb/images/ejb1.gif" width=590> 
      </FONT></P>
      <P class=line><FONT color=#386490>  </FONT><FONT color=#386490>两种类型的EJB 
      组件(Session bean 和 Entity beans)都可以存取数据库。选择哪一类 EJB 
      组件来存取数据库依赖于具体的应用系统。<BR>  下面的情况可以在 Session bean 组件中调用 SQL 语句来存取数据库:<BR>  · 
      应用系统相对简单。<BR>  · SQL 语句返回的数据不能被多个客户端共享使用。<BR>  · 
      数据不代表一个业务实体。<BR>  下面的情况要用Entity beans 组件:<BR>  · 
      超过一个客户端使用数据库调用返回的数据。<BR>  · 数据代表一个业务实体。<BR>  · 开发者想从 Sesson bean 
      中隐藏关系模型。</FONT></P>
      <P class=line><FONT color=#386490>  EJB 
      结构的这种灵活性可以让开发人员用不同的方法来开发应用系统。<BR><BR><B>三、建立数据库连接</B><BR><BR>  EJB 
      容器维护数据库的连接池,这个连接池对 EJB 组件来说是透明的。当EJB 组件申请一个连接时,EJB 
      容器从连接池中提取一个连接并分配给组件。由于EJB 容器只是分配一个连接给 EJB 
      组件,所以组件很快就获得这个连接并连接数据库。数据库调用之后,组件就可以释放连接,这样它又可以快速申请到另一个连接。又因为一个组件只占用这个连接很短的时间,从而同一个连接可以被多个组件使用。<BR>  组件不是通过数据库的绝对名来连接数据库,而是用逻辑名连接到数据库, 
      即用 JNDI lookup 来获得数据库连接,例如:在下面例子中的AccountEJB 
      类中,连接数据库有以下几个步骤:<BR>  1、指定数据库的逻辑名:<BR>  private String dbName = 
      "java:comp/env/jdbc/AccountDB";<BR>  2、获得数据源:<BR>  InitialContext ic = new 
      InitialContext();<BR>  DataSource ds = (DataSource) 
      ic.lookup(dbName);<BR>  3、从数据源得到数据库连接:<BR>  Connection con = 
      ds.getConnection();</FONT></P>
      <P class=line><FONT color=#386490>  这种间接的连接数据库有以下几个优点:<BR>  · 
      可以在具有不同的数据库名的不同环境中部署相同的 EJB 组件。<BR>  · 可以在多个应用中重用EJB 组件。<BR>  · 可以集成 EJB 
      组件到运行在分布环境的应用系统中。</FONT></P>
      <P class=line><FONT color=#386490>  另外,EJB 规范没有要求 
      J2EE的实现支持某一个特别类型的数据库系统,因此EJB 组件可以连接到不同的数据库系统。<BR><BR><B>四、EJB 
      数据库应用的例子</B><BR><BR>  下面以一个简单的例子 "银行帐户"应用系统来介绍 EJB 组件的Entity 
      bean类型的组件存取数据库。</FONT></P>
      <P class=line><FONT color=#386490>  Entity bean 的状态存储在关系数据库的 ACCOUNT 
      表中,表ACCOUNT 由下面的SQL 语句创建:<BR>  CREATE TABLE ACCOUNT<BR>    (id VARCHAR(3) 
      CONSTRAINT pk_account PRIMARY KEY,<BR>    firstname 
      VARCHAR(24),<BR>    lastname VARCHAR(24),<BR>    balance 
      DECIMAL(10.2));<BR>  和其他EJB 组件一样,开发人员必须编写 Entity bean 的 Entity Bean Class 
      代码(AccountEJB.java)、Home Interface 代码(AccountHome.java)及Remote Interface 
      代码(Account.java)。</FONT></P>
      <P class=line><FONT color=#386490>  <B>Entity Bean Class 代码( 
      AccountEJB.java)</B></FONT></P>
      <P class=line><FONT color=#386490>  <B>EntityBean 
      接口方法</B><BR>  <B>EjbCreate 方法:</B>当客户端调用 create 方法时,EJB 容器调用相应的ejbCreate 
      方法。一个Entity组件的ejbCreate 方法要实现下列工作:<BR>  · 插入Entity Bean 的状态到数据库中<BR>  · 
      初始化实例变量<BR>  · 返回主键。</FONT></P>
      <P class=line><FONT color=#386490>  AccountEJB的ejbCreate 方法调用insertRow 
      方法,而insertRow 方法发出一个 insert SQL 语句插入Entity Bean 的状态到数据库中,下面是 Account 
      类中ejbCreate 方法的源代码:<BR>  sublic String ejbCreate (String id,String 
      firstName,String lastName,double balance)<BR>    throw 
      CreateException{<BR>    if (balance &lt; 0.00){<BR>      throw new 
      CreateException("A negative initial balance is not 
      allowed.");<BR>    }</FONT></P>
      <P class=line><FONT color=#386490>    try 
      {<BR>      insertRow(id,firstName,lastName,balance);<BR>    } catch 
      (Exception ex) {<BR>      throw new 
      EJBException("ejbCreate:"+ex.getMessage());<BR>    }</FONT></P>
      <P class=line><FONT color=#386490>    this.id = id;<BR>    this.firstName 
      = firstName;<BR>    this.lastName = lastName;<BR>    this.balance = 
      balance;</FONT></P>
      <P class=line><FONT color=#386490>    return id;<BR>  }<BR>  throws 子句可以包含 
      javax.ejb.CreateException 和别的应用系统中指定的例外处理例程(exceptions)。<BR>Entity 
      Bean的状态也可以通过非 J2EE 应用系统直接插入到数据库中,如SQL 语言脚本插入一行数据到 ACCOUNT表中,尽管这条数据不是通过 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -