簡介
關系數據訪問的對象化
大多數業務都建立在信息管理系統的基礎上,而這些信息管理系統主要的底層基礎設施又是基于存儲在一個或多個關系數據庫中的數據。這些系統由一些軟件程序組成,這些軟件程序專門用于信息處理,并且是以 Java 之類的托管語言實現的。
作為一種以封裝、繼承和多態為特征、易于使用、基于面向對象的語言,Java 一方面用于實現信息處理程序的計算和邏輯方面,另一方面則用于訪問和操縱關系數據。Java 按照對象 來定義信息,而數據庫則使用 行。對象是其所屬類的惟一實例,在物理上,對象之間互有區別。同樣,關系數據庫中的行也是惟一的,它們由主鍵值標識。另一方面,對象是獨立的,只要還被一個或多個其它對象引用,它就繼續存在著。而行被包含在表當中,當被從表中刪除時,也就隨之消失。
因此,雖然對象與行在很多方面相似,但對象對于模塊化編程的內在價值在于可伸縮性、可擴展性和高效的代碼維護,這是通過 對象化(objectization)抽象關系行的設計基礎。我們把對象化定義為這樣一種過程:將面向對象的基本概念(封裝、繼承和多態)引入到使用 SQL 執行的指令式的、內聯的數據查詢實踐。簡言之,對象化就是創建無縫對象的過程,使用的方法可以通過純面向對象范例執行數據庫操作(包括創建、替換、更新和刪除)。
對于通過對象化來編程式地訪問和操縱關系數據,最流行的方式是通過一些 API 和包裝器,這些 API 和包裝器提供了一個或多個編寫為文本字符串的 SQL 語句。整個關系數據處理都是基于這些封裝的 SQL 語句的,它們是程序邏輯的重要組成部分。但是,這些 SQL 語句對于 Java 語言不是透明的,不能享受編譯時優化和語義及語法驗證的好處 —— 更不用說諸如內容輔助之類可以在底層設計和實現過程中節省大量時間的設計時特性了。
因此,在提高程序員的效率和生產率時,一個主要的挑戰是將關系數據轉換為可通過自然的面向對象方式無縫使用的對象,從而編寫底層代碼。要實現這種轉換,需要很好地理解如何安排數據訪問 API 調用的順序,并從技術上理解底層的數據訪問編程模型(例如 JDBC),此外,還需要具備優秀的編程技能并能夠將軟件(尤其是它的數據訪問層)拆分成多個模塊化部分。
pureQuery 項目為數據庫應用開發人員提供了一套基于 GUI 且易用的方法,它能夠顯著提高應用程序的設計和實現階段的生產效率。通過將關系數據自動轉換為 Java 對象的實現方式,方便了用戶對數據的訪問和操縱。將關系數據轉換為 Java 對象后,就可以很自然的通過面向對象編程范例無縫地利用這些對象來編寫業務邏輯和底層代碼。通過將查詢語言與 Java 本身相集成,pureQuery 可以代替傳統的 JDBC 編程。
本文對 pureQuery 進行了概述,并提供一個詳細的場景,以展示 pureQuery 如何顯著提高程序員的生產率。
pureQuery 是什么?
pureQuery 是一個基于 Eclipse 的、可插拔的組件,它可以與 Eclipse 集成開發環境(IDE)無縫集成。它自動提供設計和運行時方式,可將關系數據作為對象管理。這種設計使開發人員可以指定一個數據庫連接(例如使用 DB2®),然后使 Eclipse Java 項目能夠識別底層的數據庫工件(例如表、存儲過程等)。在建立連接并完成所有數據庫工件的自動發現之后,用戶可以通過 GUI 直觀地將任何底層關系表實體轉換成 Java 對象。這是通過自動生成相關 SQL 語句和自動創建封裝這些語句的父 Java 對象來實現的。然后,還可以在一個自然的 Eclipse IDE 編程環境中,使用充分集成的 SQL 和 Java 編輯功能對生成的 Java 對象和其中包含的 SQL 語句進行進一步定制。
Java 編輯器與 SQL 的緊密集成可以提高編程生產率,提供無縫的設計時體驗,并在編寫 Java 代碼時簡化 SQL 編碼。編輯器集成包括設計時編譯過程中完全支持的語義和語法驗證、內容輔助、語法著色以及在 Java 中動態、選擇性執行 SQL,當出錯時,像處理 Java 錯誤一樣在錯誤面板中進行標記。
而且,設計和運行時之間的緊密聯合,使得 SQL 語句可在設計時運行。運行 SQL 語句時,將考慮所使用的全部主機變量和參數,以預覽結果集,并自動回滾執行 SQL 語句導致的副作用。
此外,在設計時,可通過啟動 Visual Explain 對選擇的 SQL 語句進行性能分析,為查詢請求的優化器實現提供可視化表示。查詢請求被拆分成不同的部分,每個部分用圖標表示。Visual Explain 還包括關于查詢優化器所考慮和選擇的數據庫對象的信息。Visual Explain 提供了對查詢實現的詳細表示,在設計時就可以從集成的 SQL-Eclipse Java 編輯器中輕松找到造成昂貴成本的原因。
pureQuery 對象化過程
pureQuery 系統提供三種不同的方式來將關系訪問層轉換成基于對象的模型。
文章來源于領測軟件測試網 http://www.k11sc111.com/