麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

將DBMS存儲過程封裝為會話EJB組件中的方法(2)

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

  將DBMS存儲過程封裝為會話EJB組件中的方法(2)

· EJB 組件遠程接口

// EnterPRise javaBean Remote Interface for Analysis session bean
public interface Analysis extends javax.ejb.EJBObject {
// remote interface for our lookupClient method
com.ibm.db.CallableStatement lookupClient(java.lang.Integer clientId)
throws java.rmi.RemoteException;
. . .
}

請注重,假如使用 VisualAge EJB 組件向導,則無需對此進行手工編碼。替代方法是,在 bean 的實現類中對此方法編碼之后,通過菜單項來將該方法提升(promote)到 bean 的遠程接口,然后,將自動添加必需的代碼。

編碼存儲過程封裝器方法
現在可以集中講述 bean 實現類本身,將在該實現類中包括調用存儲過程的代碼,并將其所有輸出作為 com.ibm.db.CallableStatement 對象返回。此代碼樣本包含調用 CLIENTREPORT 存儲過程的 lookupClient(...) 方法的完整實現。將在后續章節中具體講解每個代碼塊(參考代碼中的注釋)的邏輯,以便您更好地理解如何為自己的存儲過程實現類似的方法。

· 連接到數據庫

讓我們更具體地查看此代碼的各部分。

在調用存儲過程之前,需要建立一個到 DBMS 的連接。有兩種方法做得到:使用 1.0 樣式的連接,或者使用 JDBC 2.0 樣式的 DataSource。在 WebSphere 環境中,通常選用后者,因為它提供連接池(connection pooling),這可以更有效地使用系統資源。出于這種原因,我們的編碼模式使用 DataSource。

除了確定要建立的連接類型之外,還應該考慮要將連接邏輯放在 bean 中的什么地方。有多個選擇:

直接放在封裝器方法(wrapper method)中
放在私有輔助方法(helper method)中
放在 ejbCreate() 方法中(并將相應的斷開邏輯放在 ejbRemove() 方法中)
這些方法的利弊超出了本文的范圍。為簡單起見,樣本代碼將所有連接/斷開邏輯直接放在方法中。

代碼塊 1 顯示了在使用 VisualAge for Java 3.0.2 和 WebSphere 3.0.2.1 時,如何使用 DataSource 進行連接。我們創建了一個散列表,在其中填充適合于 WebSphere 環境的值,然后建立一個 InitialContext。代碼的以下幾行利用該初始上下文和 Java 命名和目錄接口 (JNDI) 服務,來獲得期望的 DataSource 的索引,我們以前在 WebSphere 中用“治理控制臺”創建了該 DataSource。本例中的 DataSource 名為 LocalDB2Sample。下一步,使用該 DataSource 來獲得一個連接,并向其傳遞合適的數據庫用戶標識和口令。從連接池獲得連接之后,可以將該信息提供給 DAB DatabaseConnection 對象,來設置它所需的連接規范。最后,將 autoCommitMode 設置成 false,因為 EJB 組件負責處理事務治理服務。

測試時,在 VisualAge for Java WebSphere 測試環境中運行使用 DataSource 的 EJB 組件會很方便。有關如何在產品發行版 3.0.2 中這樣做的指示,請參閱 David Zimmerman 所著的 "Creating DataSources in the VisualAge for Java WebSphere Test Environment"(在參考資料中)。

· 調用存儲過程

建立了連接之后,可以集中講述如何調用存儲過程了。如封裝器方法編碼示例中的代碼塊 2 所示,首先創建一個 DAB StatementMetaData 對象,該對象中有存儲過程的規范。下一步,定義要執行的 SQL 語句。在這里將要調用 CLIENTREPORT 過程,該過程需要一個輸入參數(用于客戶標識)和兩個輸出參數(用于客戶名稱和電子郵件地址)。下一步,將參數添加到規范中。對于每個過程參數,都指定了參數名,其數據類型及其參數模式。

代碼塊 3 創建即將執行的 DAB CallableStatement 對象。CallableStatement 代表可用來執行存儲過程的 SQL。創建完對象之后,將其元數據設置成在代碼塊 2 中指定的形式。然后將 DatabaseConnection(在代碼塊 1 中創建)與該 CallableStatement 關聯。

下一個任務很簡單:需要執行 CallableStatement 對象,這將使 DBMS 運行存儲過程。但是,在這樣做之前,必須通過 EJB 客戶機應用程序,將過程的輸入參數設置成傳入方法的值。代碼塊 4 中顯示了這種邏輯。

檢索存儲過程的輸出并返回到調用程序
在封裝器方法編碼示例的代碼塊 5 中,將檢索存儲過程返回的輸出參數。想起來了嗎?這些參數代表 Web 站點客戶的名稱和電子郵件地址。但是,不需要顯式地檢索存儲過程返回的結果集。(這些結果集包含有關客戶投資總額和公告板發表信息的數據)。您可能要問:為什么會這樣呢?


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美jizzhd极品欧美 | 一色视频 | 久久最新网址 | 亚洲一区二区三区精品在线观看 | 欧美人与禽性xxxxx杂性 | 精品一区二区中文字幕 | av在线免费播放网站 | 免费看一级毛片欧美 | 成人三区四区 | 港台三级在线观看 | 99国产精品国产免费观看 | 男女羞羞视频在线观看免费 | 成码无人av片在线观看网站 | 日本免费中文字幕 | 国产黄色一区二区 | 国产一区二区在线免费 | 国产精品99久久久久久大便 | 免费a级毛片大学生免费观看 | 97精品视频在线观看 | 日本黄色一级毛片 | 极品国产91在线网站 | 久色亚洲 | 国产精品爆操 | 51国产偷自视频区视频小蝌蚪 | 女人解衣喂奶电影 | 高清中文字幕在线 | 国产91亚洲精品久久久 | 欧美国产第一页 | 最新黄色电影网站 | 色毛片| 国产一区二区三区网站 | 26uuu成人人网图片 | 欧美成人一区免费视频 | 亚洲一区二区中文字幕在线观看 | 久久综合久久综合久久 | 奶子吧naiziba.cc免费午夜片在线观看 | 免费在线观看成年人视频 | 国产成人精品一区在线播放 | 成人在线免费观看视频 | 99精品视频网站 | 国产一区二区三区高清 |