pureQuery Runtime 可與 Java 應用程式一起使用。
pureQuery Runtime 也可以與 DB2® ODBC/CLI 及 Microsoft .NET 應用程式一起使用。
Java pureQuery API 應用程式的特性
除了用戶端最佳化特性之外,pureQuery Runtime 還提供 API 特性。
若為使用 pureQuery API 的應用程式,InfoSphere® Optim™ pureQuery Runtime 提供下列特性:
- 單一 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 Runtime 支援下列平台及架構:
- Java
- Java Persistence API (JPA)
- Spring
- Hibernate
- iBatis
已啟用 pureQuery 用戶端最佳化的 Java 應用程式特性
不使用 pureQuery API 的應用程式,可以充分運用用戶端最佳化,這不像其他支援在 DB2 資料庫上以靜態方式執行 SQL 的技術:
- 相對於針對內嵌式 SQL 使用前置處理器的 COBOL 程式設計語言,pureQuery 用戶端最佳化並未使用前置處理器。
- 相對於 SQLJ,pureQuery 用戶端最佳化並未使用轉換器或自訂程式。
- 您不需要將 SQL 陳述式寫在應用程式的原始程式碼中。
用戶端最佳化會變更 JDBC 驅動程式與應用程式的互動方式,而不需要這些元件或程式碼的變更。
pureQuery 用戶端最佳化提供下列特性:
- pureQuery 資料的安全儲存體
- 可以將 pureQuery 配置資訊、pureQueryXML 資料(包括 pureQuery Runtime 所使用的 SQL 資料)以及擷取的
SQL 資料儲存在安全位置中,並且依需要由 pureQuery Runtime 存取。可以將 pureQuery Runtime 配置為從安全的位置擷取
pureQuery 資料。pureQuery Runtime 可以將從使用 pureQuery 用戶端最佳化的已啟用 pureQuery 應用程式中擷取的 SQL 資料,儲存在安全的位置中。
- DB2 特別暫存器支援
- 從應用程式擷取 SQL 陳述式時,pureQuery 用戶端最佳化會追蹤
SQL 陳述式所使用的 DB2 特別暫存器資訊。
pureQuery 用戶端最佳化會記錄特別暫存器的特別暫存器值,這些是常用值且可能會影響 SQL 陳述式的行為。
在某些情況中,當發出相同的 SQL 陳述式兩次,如果特別暫存器的值在它第一次和第二次執行之間變更,則陳述式的行為可能會不一樣。
「pureQuery 配置」公用程式選項
-optionsFileForBind 可以根據使用擷取的 SQL 陳述式所記錄的特別暫存器資訊,來產生包含連結選項的 StaticBinder
選項檔案。選項檔也包含陳述式集、SQL 陳述式,與 pureQueryXML 檔中特別暫存器資訊的相關資訊和警告。
檔案中的資訊可協助您指定一組連結選項,以在以靜態方式執行 SQL 陳述式時,陳述式的行為會類似當它從應用程式中發出,並且以動態方式來執行時的行為。
當您連結其中包含 SQL 陳述式的 DB2 套件時,可以利用 pureQuery StaticBinder 公用程式來指定連結選項。
- 輕鬆管理 pureQueryXML 檔案
- 下列特性能協助您管理在 pureQueryXML 檔中的 SQL 陳述式和陳述式集:
- Configure 公用程式可以依照 SQL 陳述式中的文字(如表格或直欄名稱),或是依照特別暫存器使用,來對 SQL 陳述式進行分組。
- 如果在指定的天數內應用程式並未發出陳述式,則 Configure 公用程式可以從 pureQueryXML 檔中刪除 SQL 陳述式。pureQuery Runtime 會追蹤從應用程式中發出 SQL 陳述式的時間,並且更新 pureQueryXML 檔案中的該資訊。
- Configure 公用程式可以設定在處理 pureQueryXML 檔案之前,或處理之後的陳述式集狀態。陳述式集的狀態可以控制 Configure 公用程式是否嘗試修改陳述式。
- Configure 公用程式可以變更資料庫位置名稱,以及 pureQueryXML 檔案中 SQL 陳述式的綱目名稱。
- 當連結程序對陳述式傳回錯誤時,StaticBinder 公用程式可以處理在 pureQueryXML 檔案中的 SQL 陳述式。此公用程式可將陳述式標記為無效,或是將它從檔案中移除。如果陳述式已標記為無效,陳述式會繼續保留在檔案中,但未如同可連結陳述式般進行處理。您可以使用 Configure
公用程式將陳述式變更為有效的可連結陳述式,或移除無效的陳述式。
- Configure、Merge 及 StaticBinder 公用程式可以對輸入 pureQueryXML 檔案執行 XML 綱目驗證。
- ManageRepository 公用程式可以產生一份報告,其中會列出兩個 pureQueryXML 檔案之間的差異。您可以比較更新的 pureQueryXML 檔案與原始檔案,即可輕易地看到對 pureQueryXML 檔案所進行的變更。
ODBC/CLI 應用程式及 .NET 應用程式的特性
呼叫層次介面 (CLI) 是用於關聯式資料庫存取的 C 和 C++ 應用程式設計介面。CLI 會使用函數呼叫來傳遞動態 SQL 陳述式以作為函數引數。.NET 應用程式包括以任何 .NET 型語言(例如 C# 及 VB.NET)所撰寫的應用程式。
在您對連接至 DB2 資料庫或 Informix® 資料庫的 CLI 或 .NET 應用程式啟用 pureQuery 用戶端最佳化之後,即可控制由應用程式所發出的 SQL 陳述式。
例如,如果應用程式連線到 DB2 資料庫,您可以將應用程式配置成以靜態方式對資料庫執行 SQL 陳述式。您可以控制已容許對資料庫執行的 SQL 陳述式。
pureQuery 用戶端最佳化的好處包括:
- 能對 DB2 資料庫以靜態方式執行 SQL 陳述式。
- 使用設備來診斷 SQL 陳述式的問題,以追蹤應用程式的原始碼。
- 以最佳化的陳述式取代效能不良的 SQL 陳述式。
- 能執行一個受限的 SQL 陳述式集,以降低 SQL 注入攻擊的風險。
若為 CLI 應用程式,您可以執行
SQL 陳述式,並利用 DB2 指令 db2cli 來驗證 SQL 陳述式。您指定了已備妥的 SQL 陳述式,但未執行以驗證 SQL 陳述式。
您可以擷取在 pureQueryXML 檔案中執行或驗證的 SQL 陳述式。
如需利用 .NET 開發 DB2 應用程式的相關資訊,請參閱 ADO.NET 應用程式開發。
如需利用 CLI 開發 DB2 應用程式的相關資訊,請參閱 DB2 呼叫層次介面及 ODBC 簡介。