ORM隨想
前言
周末的夜晚,總顯得特別無聊,總看衛斯理的書不是辦法,得找點事情干干。前幾天為了驗證自己的一個想法,到網上搜索,結果發現了hibernate,為了跑一跑hibernate,結果學習了Ant,最后發現hibernate是一個ORM工具,于是自然把視線轉移到了ORM。在網上的資料中游蕩,發現對于ORM沒有一個完整的中文資料,English的資源也不甚明了。于是有必要把自己所看、所想、所用的做一個小小的總結。
ORM的定義及來由
ORM是Object-Relational Mapping的簡稱,中文含義是“對象――關系映射”。此處的“對象”,乃是Object Oriented(面向對象技術)中的對象,而“關系”則是關系數據庫中的關系。
為什么需要ORM呢?自然是因為需要將對象和關系互相轉換,而為什么需要互相轉換,就需要解釋一下“程序”的概念。最早關于程序的概念是:
程序=算法+數據結構
而在信息處理領域,目前我們實際面對的程序概念是:
程序=數據+數據處理
計算機的程序有兩個大的應用領域:科學計算和信息處理,最初的計算機程序大部分是為了進行科學計算的,這也是為什么在早期的大學中計算機系是數學系的一個分支的原因。而隨著計算機技術的不斷發展,尤其是網絡技術的發展,信息處理已經成為計算機重點關注的問題。“信息技術”(Information Technology,IT)產業也不斷發展狀態,甚至脫離了計算機技術的領域,自立門派了。說了那么多,其實就是為了說明一個問題,目前的計算機程序,大部分是為了進行信息處理的,而進行信息處理的程序,就等于數據+數據處理。
而目前程序中的數據大部分是保存在關系數據庫中的。目前程序的數據處理流程大部分是用面向對象語言編寫的,因此
程序=關系數據庫+面向對象語言
這個等式在大部分狀況下成立。面向對象語言中的基本信息存儲單位是“對象”,而關系數據庫中的基本信息存儲單位是“記錄”。那么,當程序需要在數據的處理和數據的存儲之間交換信息時,不可避免的要將“對象”和“記錄”進行轉換。
關系數據庫的理論基礎是關系代數,面向對象語言的理論基礎是面向對象技術,如果能夠在具體的程序編寫之前解決“對象”和“記錄”的映射問題,提出一個通用的解決方案,那么一定能夠大大加快程序開發的效率和質量。這個通用的解決方案在部分上已經實現了,就是ORM。
力有未逮,下次再續……