頭兩項是基本編程任務(wù),您可能已經(jīng)熟悉。根據(jù)所用產(chǎn)品的不同,個別步驟可能會略有不同,但是大多數(shù)產(chǎn)品都有工具來提供幫助。例如,假如正在使用 VisualAge for Java 和 DB2,則可以利用“存儲過程構(gòu)建器”來完成步驟 1,以及利用 EJB 開發(fā)特性來完成步驟 2。本文將不集中講述頭兩步。但是,其余三步需要具體講解。本文將在一個實際示例的環(huán)境下討論這些步驟中的每一步。
瀏覽應用方案
假設(shè)需要構(gòu)建一個應用,該應用支持一家公司的市場營銷分部,該分部維護面向金融的 Web 站點。該站點答應人們注冊為客戶,跟蹤他們的投資總額,以及在電子公告板上發(fā)表意見。另外還假設(shè),支持該站點的數(shù)據(jù)存儲在 DB2 的表中。以下代碼樣本顯示如何創(chuàng)建這些表。
在 DB2 中創(chuàng)建樣本表的 SQL 語句
create table client (
id int not null primary key,
name varchar(30),
email varchar(30),
phone varchar(12),
regdate date,
mktg char,
constraint check1 check (mktg in (‘y‘, ‘Y‘, ‘n‘, ‘N‘))
測試時,在 VisualAge for Java WebSphere 測試環(huán)境中運行使用 DataSource 的 EJB 組件會很方便。有關(guān)如何在產(chǎn)品發(fā)行版 3.0.2 中這樣做的指示,請參閱 David Zimmerman 所著的 "Creating DataSources in the VisualAge for Java WebSphere Test Environment"(在參考資料中)。
調(diào)用存儲過程
建立了連接之后,可以集中講述如何調(diào)用存儲過程了。如封裝器方法編碼示例中的代碼塊 2 所示,首先創(chuàng)建一個 DAB StatementMetaData 對象,該對象中有存儲過程的規(guī)范。下一步,定義要執(zhí)行的 SQL 語句。在這里將要調(diào)用 CLIENTREPORT 過程,該過程需要一個輸入?yún)?shù)(用于客戶標識)和兩個輸出參數(shù)(用于客戶名稱和電子郵件地址)。下一步,將參數(shù)添加到規(guī)范中。對于每個過程參數(shù),都指定了參數(shù)名,其數(shù)據(jù)類型及其參數(shù)模式。
在封裝器方法編碼示例的代碼塊 5 中,將檢索存儲過程返回的輸出參數(shù)。想起來了嗎?這些參數(shù)代表 Web 站點客戶的名稱和電子郵件地址。但是,不需要顯式地檢索存儲過程返回的結(jié)果集。(這些結(jié)果集包含有關(guān)客戶投資總額和公告板發(fā)表信息的數(shù)據(jù))。您可能要問:為什么會這樣呢?
Bontempo、Charles J. 和 Cynthia Maro Saracco 所著的 Database Management: Principles and ProdUCts, Prentice Hall, 1995, ISBN 0-13-380189-6。該書討論了數(shù)據(jù)庫治理系統(tǒng)的基礎(chǔ),并簡述了不同商業(yè)產(chǎn)品中提供的功能。
Data Access Beans Javadoc 描述了本文所討論的數(shù)據(jù)訪問 Bean 的 API。該書可在 VisualAge for Java 聯(lián)機文檔中獲得。在運行產(chǎn)品時,選擇幫助 -> 參考資料 -> IBM API -> 數(shù)據(jù)存取 Bean -> com.ibm.db 包。
Date, C. J. 所著的 An Introduction to Database Systems, Seventh Edition, Addison-Wesley, 1999, ISBN 0-20138-590-2。該書討論了數(shù)據(jù)庫治理系統(tǒng)的基礎(chǔ),并提供有關(guān)關(guān)系數(shù)據(jù)模型的具體信息。
DB2 產(chǎn)品手冊
"Enterprise JavaBeans Specification" 的最新版本,可下載。
"JDBC API Specification" 的最新版本,可下載。
Monson-Haefal, Richard 所著的 Enterprise JavaBeans, O‘Reilly and Associates, 1999, ISBN 1-56592-605-6。該書描述 EJB 編程基礎(chǔ),并提供大量編碼示例。
Picon Joaquin 和 Patrizia Genchi、Maneesh Sahu、Martin Weiss、Alain Dessureault 所著的 Enterprise JavaBeans Development Using VisualAge for Java, IBM 紅皮書,1999 年 5 月。該紅皮書提供有關(guān)用 VisualAge for Java 開發(fā)不同種類 EJB 組件的循序漸進指示。請造訪 www.ibm.com/redbooks,并搜索 SG24-5429。
Saracco、Cynthia Maro 所著的 "Leveraging DBMS Stored Procedures through Enterprise JavaBeans," IBM 技術(shù)報告 03.723,2000 年 8 月。該報告提供十分具體地討論了本文所述的主題,還重點討論了設(shè)計問題及其利弊。可從 Database and Data Management 白皮書 或 VisualAge 開發(fā)者園地 獲得
Saracco、Cynthia Maro 所著的 Universal Database Management: A Guide to Object/Relational Technology, Morgan Kaufmann Publishers, Inc., 1998, ISBN 1-55860-519-3。該書描述了關(guān)系 DBMS 供給商已經(jīng)集成到,或可能要集成到其產(chǎn)品中的面向?qū)ο髷U展。它提供了大量 SQL 示例。