国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

EJB 技術的數據庫應用(2)

2019-11-18 14:44:50
字體:
來源:轉載
供稿:網友

  EJB 技術的數據庫應用(2)

三、建立數據庫連接

   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;  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘肃省| 大埔区| 九寨沟县| 沙田区| 阿荣旗| 瑞安市| 佛坪县| 漾濞| 保定市| 靖宇县| 三门县| 建平县| 阿巴嘎旗| 大城县| 湛江市| 北宁市| 城市| 大方县| 安化县| 霍山县| 恭城| 浮梁县| 常德市| 克拉玛依市| 陆河县| 兴宁市| 大理市| 天峻县| 青海省| 横山县| 山东省| 龙岩市| 藁城市| 奉节县| 东平县| 泸溪县| 油尖旺区| 东海县| 丰城市| 望奎县| 内江市|