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

首頁 > 學院 > 開發(fā)設計 > 正文

將存儲過程封裝為EJB組件的方法

2019-11-18 15:45:06
字體:
來源:轉載
供稿:網(wǎng)友

  集成 Web 應用服務器和數(shù)據(jù)庫治理 (DBMS) 技術是很多新型商業(yè)應用的常見需求。在本文中,我們將討論該集成的一個方面:如何在會話 EnterPRise javaBeans (EJB) 組件中設計與開發(fā)封裝或調用現(xiàn)有 DBMS 存儲過程的方法。
您應該熟悉 EJB 技術、結構化查詢語言 (SQL) 和 Java 數(shù)據(jù)庫連接 (JDBC) 的基本知識,以便充分理解本文。

  假如您正致力于需要訪問或修改在 DMBS 中數(shù)據(jù)的 Web 應用程序開發(fā),那么可能已經(jīng)在向基于 EJB 的設計轉移。您可能會發(fā)現(xiàn),通過使會話 EJB 組件利用 DBMS 存儲過程,可以減少編碼和維護工作,并可能提高數(shù)據(jù)訪問性能。

  一些公司多年來一直在使用存儲過程(stored procedure),很大程度上是因為它們可以幫助減少網(wǎng)絡通信量,并提高分布式計算環(huán)境中的性能。通常,這些過程包含涉及多數(shù)據(jù)庫操作的重要業(yè)務邏輯。遠程應用程序調用這些過程,在 DMBS 服務器上執(zhí)行它們所包含的 SQL 語句。當然,過程結束時,所有結果都返回給應用程序。

  這些舊有存儲過程對 Web 應用通常是有用的。與其在 EJB 組件中復制這些邏輯,為什么不將這些過程作為方法封裝在會話 bean 中呢?這樣可以避免 DBMS 服務器和 EJB 組件中的冗余代碼 -- 在考慮開發(fā)、調試和維護開銷時,冗余代碼將損耗開發(fā)效率。這還可能帶來提高性能的好處。調用存儲過程可以減少 EJB 組件原本不得不發(fā)出的 SQL 語句數(shù)量,從而減少與遠程 DBMS 的通信開銷。

  入門

  現(xiàn)在明白為什么要從會話 bean 調用存儲過程了吧,下面我們看看如何開始。首先,需要使用適當?shù)拈_發(fā)環(huán)境,該環(huán)境應該包括一個帶有內置 EJB 支持的 Java 開發(fā)工具,一個 Web 應用服務器和一個關系 DBMS。我的參考配置包括 VisualAge for Java 企業(yè)版 3.0.2,WebSphere application Server 高級版 3.0.2.1,以及 DB2 V7.1,所有這些都安裝在一個 Windows NT 系統(tǒng)上。有關如何配置該環(huán)境以支持本文所述工作的具體信息,請參閱 "Leveraging DBMS Stored Procedures through Enterprise JavaBeans"(位于參考資料中)或參考產(chǎn)品手冊。

  有了正確的軟件環(huán)境,就可以開始了。雖然我們要討論的編碼模式可能適合于無狀態(tài)會話(stateless session) bean,但它也可使用有狀態(tài)會話(stateful session) bean 組件。但是,因為無狀態(tài)會話 bean 比有狀態(tài)會話 bean 消耗的系統(tǒng)資源更少,而且涉及的代碼也更少,所以通常建議使用無狀態(tài)會話 bean。

  首先要考慮的設計問題是如何在存儲過程和 EJB 組件之間映射數(shù)據(jù)。存儲過程可能需要多個輸入、輸出和輸入/輸出參數(shù),并返回一個或多個結果集(代表數(shù)據(jù)行)。除非要對不同類型的過程使用不同的編碼模式,您需要編寫 EJB 組件以便處理所有這些可能性。

  處理輸入(或者輸入/輸出)參數(shù)很簡單:將存儲過程需要的每個參數(shù)映射成 EJB 組件的輸入?yún)?shù)。但是,處理存儲過程的輸出比較棘手。可能有多個輸出參數(shù)和多個結果集要傳回調用程序,需要將這些作為一個可序列化的對象返回,以符合 EJB 規(guī)范。可以編寫自己的類,使其可以將這些數(shù)據(jù)打包成一個對象,并在該對象中包括所有必須的元數(shù)據(jù)。(該元數(shù)據(jù)將描述對象的內部結構,以便客戶機知道如何處理。)但這需要大量工作。

  假如正在使用 VisualAge for Java 和 WebSphere,那么,有個更好的選項:使用它們的數(shù)據(jù)訪問 Bean (DAB) 庫。該庫包含一些提供位于基本 JDBC 之上的函數(shù)層的類。可能會發(fā)現(xiàn) com.ibm.db.CallableStatement 類非凡方便,因為它答應創(chuàng)建一個可序列化的對象,該對象包含所有從存儲過程返回的輸出,包括多個結果集(假如有的話)和相關元數(shù)據(jù)。還有一個好處是,該庫設計成可以支持任何支持 JDBC 的數(shù)據(jù)源,因此,它可以使 bean“與 DBMS 無關”。有了 DAB 庫,就可以用一個編碼模式在會話 EJB 組件中封裝任何存儲過程。甚至可以在 EJB 客戶機中使用一個通用的編碼模式,來處理任何從封裝器方法返回的結果。 回顧開發(fā)任務

  我們來討論一下使用通用編碼模式,來集成 EJB 組件和 DBMS 存儲過程的步驟:

  確定要將哪個存儲過程封裝成 EJB 方法。假如該過程不存在,則遵循 DBMS 標準過程來創(chuàng)建和調試。



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉荫县| 黄骅市| 遂昌县| 普陀区| 理塘县| 冀州市| 锡林郭勒盟| 柳江县| 西林县| 库尔勒市| 盘锦市| 闸北区| 绵竹市| 南溪县| 务川| 德庆县| 宁强县| 资溪县| 襄汾县| 察隅县| 马公市| 山东省| 柳江县| 丰都县| 贵南县| 神木县| 万盛区| 松潘县| 来凤县| 台前县| 六安市| 阿拉善盟| 云阳县| 甘南县| 云和县| 西昌市| 阳山县| 三原县| 贵定县| 安平县| 西丰县|