在您安裝 InfoSphere® Optim™ pureQuery Runtime 之後,可以將您的 pureQuery 或 pureQuery 已啟用的 Java 應用程式部署到正式作業環境中。您也可以開發 DB2® CLI 和 Microsoft .NET 應用程式。
Java 應用程式的功能
若是使用 pureQuery API 的應用程式,InfoSphere Optim pureQuery 能提供下列特性:
- 提供單一的 API,您可以對資料庫、記憶體內集合,以及 Iterator 物件執行 SQL 陳述式
Java 平台能提供大量資料結構和 API,來處理記憶體內集合及來自各種來源的外部資料。其中每一種特性,都能完美地適用於解決特定類型的問題。pureQuery 也有一組唯一的介面,可用來擷取及修改集合中的資料。例如,pureQuery 提供了一項 API 可用於 Java Arrays、Lists、Maps 及 Iterators。每一項 API 都會查詢集合中的資料,在某些狀況中還會更新資料。
同樣地,JDBC API 會提供使用 SQL 來存取關聯式及其他外部 JDBC DataSource 物件的方法。不過,pureQuery 容許應用程式使用單一的已知查詢語言,以個別或者組合的方式存取所有這些資料來源。
- 針對資料存取提供簡式程式設計模型
- pureQuery 會以 JDBC 頂端的薄層來執行。pureQuery 也能簡化已儲存程序的查詢、更新及呼叫,以及與存取資料庫相關聯的其他作業。pureQuery 會在 Java 2 Platform Standard Edition
5.0 (J2SE 5.0) 及 Java Platform Standard Edition 6 (Java SE 6) 上執行。
- 在極少開發人員人為介入的情況下,自動將 SQL 資料對映至傳回類型,但是您可以對複雜的對映提供自訂的程式碼
- 對於許多 Java 物件型樣,pureQuery 提供 SQL 查詢結果與傳回物件之間的自動對映。針對查詢結果與 Java 物件之間的複雜對映,會有一項容許自訂對映的可插式結束程式介面。
您可以建立並標註能傳回包含合併表格之 SQL 查詢結果的 Bean。查詢結果會傳回作為包含其他 Bean 之實例的一組 Bean。Bean 的階層能反映出查詢結果的一對一及一對多關係。例如,查詢中包含員工表格與部門表格之間的結合。查詢能傳回已指派給不同部門的員工。這些結果會傳回作為一組部門 Bean,其中部門 Bean 的每一個實例代表一個部門。每一個部門 Bean 都包含一份員工 Bean 的清單。員工 Bean 的每一項實例都包含員工資訊。
- 支援使用標註方法和行內方法來開發 SQL 應用程式
- 已支援標註方法,以便定義您在自訂介面中自己的方法。您可以建立具有以 SQL 陳述式來標註之定義的方法。您可以使用標註方法來建立存取物件,以便開發遵循「資料存取物件 (DAO)」型樣的應用程式。
已支援行內方法,以便您可以利用在 IBM 提供的 Data 介面中定義的方法。對於在應用程式執行時期,需要 SQL 陳述式之建構的應用程式而言,行內方法是非常有用的。利用行內方法,會將 SQL 陳述式作為方法呼叫中參數來傳遞,這類似於在 JDBC 中所採用的方法。
對於以靜態方式執行之 SQL 陳述式,已提供管理支援。您可以標註您的程式碼,來對介面中使用的 SQL 陳述式進行分組。您可以控制群組的連結程序。您可以控制 pureQuery StaticBinder 公用程式所使用的連結選項。您也可以控制對包含 SQL 陳述式之套件所產生的名稱。
- 在執行時期同時支援動態及靜態 SQL
- 對於內嵌式 SQL 及直到執行時期才明確的特定 SQL,pureQuery 程式碼都可以使用具有標準 JDBC 驅動程式的動態 SQL。
pureQuery 程式碼還可以在程式碼使用標註方法程式設計樣式及 DB2 資料庫時使用靜態 SQL。靜態 SQL 具有以下優點:
- 避免動態陳述式快取
- 使用靜態 SQL 時能減少 DB2 動態陳述式快取的競用,進而增進使用動態 SQL 之應用程式的效能。
- 存取路徑的一致性
- 靜態 SQL 能在執行應用程式之前先鎖定存取路徑,讓回應時間成為可預計且穩定的回應時間。相比之下,系統會在執行時期計算動態 SQL 的存取路徑。
- 增進應用程式效能的潛在性
- 靜態 SQL 可以增進應用程式的效能。
- 由於在執行時期之前會判斷存取計劃,因此無需在執行時期準備 SQL 陳述式。
- 因為不需要準備及說明每一個陳述式,因此用戶端應用程式與資料庫伺服器之間,只有較少的網路資料流量。
- 靜態 SQL 會針對述詞中所使用的主變數或參數嚴格施行資料類型。這種嚴格的強制執行會確保輸入資料符合資料庫中的目標類型。
- 更嚴格的安全
- 您可以授與使用者對 DB2 套件的 EXECUTE 專用權,而非授與使用者對資料庫物件的專用權。
- 簡化修訂套件的程序
- 建立 DB2 套件的版本,能讓您重新連結套件,而不會發生遺失之前良好存取路徑的風險。
- 當您在 z/OS® 上執行 pureQuery 應用程式時,支援 JDBC「類型 2」連線
- 由於 JDBC「類型 2」驅動程式是 Java 與原生程式碼的組合,因此「類型 2」連線通常比「類型 4」連線執行更好。
您不使用 pureQuery API 的應用程式,可以利用用戶端最佳化,這不像支援靜態執行 SQL 的其他技術:
- pureQuery 用戶端最佳化並未使用前置處理器,不像對內嵌式 SQL 使用前置處理器的 COBOL 程式設計語言。
- pureQuery 用戶端最佳化並未使用轉換器或自訂程式,不像 SQLJ。
- 您不需要將 SQL 陳述式寫在應用程式的原始程式碼中。
用戶端最佳化會變更 JDBC 驅動程式與應用程式互動的方式,而不需要這些元件或您程式碼的變更。
- pureQuery 資料的安全儲存體
- 可以將 pureQuery 配置資訊、pureQueryXML 資料,以及擷取的 SQL 資料儲存在安全的位置中,並且視需要由 pureQuery Runtime 來存取。可以將 pureQuery Runtime 配置成從安全的位置擷取 pureQuery 資料。pureQuery Runtime 可以從使用 pureQuery 用戶端最佳化之 pureQuery 已啟用的應用程式,將擷取的 SQL 資料儲存在安全的位置中。
- DB2 特別暫存器支援
- 從應用程式擷取 SQL 陳述式時,pureQuery 用戶端最佳化會追蹤特別暫存器資訊。pureQuery 用戶端最佳化會記錄常用,以及可能會影響 SQL 陳述式行為之特別暫存器的特別暫存器值。在某些情況中,當發出相同的 SQL 陳述式兩次,如果特別暫存器的值在它第一次和第二次執行之間變更,則陳述式的行為可能會不一樣。
「pureQuery 配置」公用程式可以根據使用擷取的 SQL 陳述式所記錄的特別暫存器資訊,來產生連結選項。使用 Configure 公用程式選項 -optionsFileForBind 來建立 StaticBinder 選項檔,其中包含根據擷取陳述式時所記錄之特別暫存器設定的連結選項。選項檔也包含陳述式集、SQL 陳述式,與 pureQueryXML 檔中特別暫存器資訊的相關資訊和警告。
檔案中的資訊可協助您指定一組連結選項,以便在以靜態方式執行 SQL 陳述式時,陳述式的行為能類似當它從應用程式中發出,並且以動態方式來執行。當您連結其中包含 SQL 陳述式的 DB2 套件時,可以使用 pureQuery StaticBinder 公用程式來指定連結選項。
pureQuery Runtime 2.2.0.3 版和更新版本能記錄 pureQueryXML 檔中的特別暫存器資訊。如果您的 pureQueryXML 檔使用比 2.2.0.3 版更早的 pureQuery Runtime 版本所建立,則您可能需要再擷取一次部分的 SQL 陳述式,以便記錄特別暫存器資訊。
- 輕鬆地管理 pureQueryXML 檔案
- 下列特性能協助您管理在 pureQueryXML 檔中的 SQL 陳述式和陳述式集:
- Configure 公用程式可以依照 SQL 陳述式中的文字(如表格或直欄名稱),或是依照特別暫存器使用,來對 SQL 陳述式進行分組。
- 如果在指定的天數內應用程式並未發出陳述式,則 Configure 公用程式可以從 pureQueryXML 檔中刪除 SQL 陳述式。當 pureQuery 內容 captureMode 設成「開啟」時,pureQuery Runtime 會更新從應用程式中發出 SQL 陳述式的時間。
- Configure 公用程式可以設定在處理 pureQueryXML 檔案之前,或處理之後的陳述式集狀態。陳述式集的狀態可以控制 Configure 公用程式是否嘗試修改陳述式。如果您在 pureQueryXML 檔上使用 StaticBinder 來連結 DB2 資料庫上的 SQL 陳述式,則需要在修改此集之後,重新連結陳述式集內的 SQL 陳述式。
- Configure 公用程式可以變更資料庫位置名稱,以及 pureQueryXML 檔案中 SQL 陳述式的綱目名稱。
- 當連結程序對陳述式傳回錯誤時,StaticBinder 公用程式可以處理在 pureQueryXML 檔案中的 SQL 陳述式。此公用程式可將陳述式標記為無效,或是將它從檔案中移除。如果陳述式已標記為無效,陳述式會繼續保留在檔案中,但會將它視為如同其 isBindable 屬性已設成 false。您可以使用 Configure 公用程式將陳述式標記為有效,或是移除已標記為無效的陳述式。
- Configure、Merge 及 StaticBinder 公用程式可以對輸入 pureQueryXML 檔案執行 XML 綱目驗證。
- ManageRepository 公用程式可以產生一份報告,其中會列出兩個 pureQueryXML 檔案之間的差異。您可以比較更新的 pureQueryXML 檔案與原始檔案,即可輕易地看到對 pureQueryXML 檔案所進行的變更。
C 和 C++ 呼叫層次介面 (CLI) 應用程式的特性
呼叫層次介面 (CLI) 是用於關聯式資料庫存取的 C 和 C++ 應用程式設計介面。CLI 會使用函數呼叫來傳遞動態 SQL 陳述式以作為函數引數。
在您對連線到 DB2 資料庫或 Informix® 資料庫的 CLI 應用程式啟用 pureQuery 用戶端最佳化之後,您即可控制由該應用程式所發出的 SQL 陳述式。例如,如果應用程式連線到 DB2 資料庫,您可以將應用程式配置成以靜態方式對資料庫執行 SQL 陳述式。您可以控制已容許對資料庫執行的 SQL 陳述式。
pureQuery 用戶端最佳化的好處包括:
- 能對 DB2 資料庫以靜態方式執行 SQL 陳述式。
- 使用設備來診斷 SQL 陳述式的問題,以追蹤應用程式的原始碼。
- 以最佳化的陳述式取代效能不良的 SQL 陳述式。
- 能執行一個受限的 SQL 陳述式集,以降低 SQL 注入攻擊的風險。
您可以執行 SQL 陳述式,並使用 DB2 指令 db2cli 來驗證 SQL 陳述式。您可以執行 db2cli 指令並搭配 exec 選項,來執行或驗證檔案中的 SQL 陳述式。您可以指定檔案中的 SQL 陳述式已準備好,但未執行以驗證 SQL 陳述式。您可以擷取在 pureQueryXML 檔案中,利用 db2cli 指令來執行或驗證的 SQL 陳述式。