IBM Data Studio pureQuery 提供高效能資料存取平台,核心優勢在於輕鬆啟用靜態 SQL:SQL 準備步驟在部署前完成,執行期效能更佳,且免疫 SQL 注入攻擊。pureQuery 1.2 推出Client Optimization (pureQuery for JDBC applications),無須重寫既有 JDBC 程式碼 (含 Hibernate/JPA) 即可享受靜態 SQL 優勢。
.pdqxml。此過程具迭代性,常需多輪捕捉-綁定-驗證。
ClientOptimizationProject.zip、資料庫腳本 DB_Script.sql執行 db2 -tf DB_Script.sql 建立 GS_DB;Eclipse 中建立 Java 專案 ClientOptimization,匯入範例原始碼 (含 BasicJDBCApp 兩條程式碼路徑)。
Database Explorer 新增 GS_DB 連線;專案右鍵 pureQuery > Add pureQuery Support,勾選 Enable SQL capturing and binding for JDBC applications。專案自動加入 JCC 驅動、pdq.jar、配置檔 (DB2JccConfiguration.properties、*.genProps、*.bindProps)。
編輯 DB2JccConfiguration.properties:captureMode=ON、executionMode=DYNAMIC、指定 pureQueryXml 路徑。建立 Run Configuration,參數帶入 JDBC URL、User、Password、1 (僅跑路徑 1)。建議加入 VM 參數 -Dpdq.traceLevel=FINE 啟用日誌。
捕捉完成後專案出現 capture.pdqxml、pdq.log。Outline 視圖三分頁:
編輯 Default.genProps:修改套件名稱前綴 (如 REPP)、集合 ID、版本號。編輯 Default.bindProps:調整 defaultOptions、綁定選項 (隔離層級等)。存檔後專案重建,Outline 刷新預覽更新後套件結構。
右鍵 capture.pdqxml 選 pureQuery > Bind,目標選 GS_DB。Console 顯示成功訊息。Database Explorer 驗證套件 REPP 存在且包含預期 SQL (四隔離層級各一份)。
修改 DB2JccConfiguration.properties:captureMode=OFF、executionMode=STATIC。重跑路徑 1,應成功靜態執行。修改 Run Configuration 移除參數 4 (跑雙路徑),驗證路徑 2 的 SQL 因未捕捉而動態執行 (預設 allowDynamicSQL=TRUE)。
設定 allowDynamicSQL=FALSE,重跑雙路徑將拋出 SQLException (缺少中繼資料)。回到捕捉模式 (captureMode=ON, executionMode=STATIC, allowDynamicSQL=TRUE) 跑路徑 2 增量捕捉。刷新 Outline,檢視新增 SQL,重新綁定。最終設定 captureMode=OFF, executionMode=STATIC, allowDynamicSQL=FALSE,分別跑路徑 1、2、雙路徑,全部靜態執行成功。