OR框架翻譯過來就是對象關系映射框架,一提起OR框架,馬上就會想起大名鼎鼎的Hibernate,Ibatis,以及其他的一些對象關系映射框架,並驚歎它的神奇。在驚歎之余,不免會產生興趣一探他們的實現原理。下面我們就一起來實現一個簡單的OR框架。
首先,我們為什麼要使用OR框架?雖然現在OOA,OOP的思想已經成為軟件編程的主流思想,但是關系型數據庫依然是最主流、效率最高的數據庫。所以問題來了,如何將我們面向對象思想程序中產生的數據持久化到關系型數據庫中呢?當然了,方法很多,最直接的就是使用sql語言將數據依照他們的關系存到數據庫當中,但是這樣實現起來非常麻煩,為了實現一個簡單的功能,常常需要我們寫上幾百行的代碼,費時又費力;也可以使用流行ORM框架,例如Hibernate,Ibatis等,事實上,大多數的中小型公司的確是使用Hibernate作為自己的首選。Hibernate是一個非常優秀的OR框架,它對JDBC進行了輕量級的封裝,使我們可以隨心所欲的使用面向對象的思想來操縱數據庫。下面,我們就來探究一下如何實現一個簡單的OR框架,完成與Hibernate相同的功能。
為了說明實現的中心思想,我們先略去細枝末節。對實現做出以下規則:
VO對象的類名要對映數據庫的表名,例:VO對象類名為User.java,則數據庫表則為user;
VO對象的成員變量名對映數據庫表的字段名,例:User中的成員變量為id,name,birthday,則數據庫user表中字段名稱也必須為id,name,birthday;
VO對象中成員變量的類型與數據庫表中字段類型的對應關系為(我們使用的數據庫為MYSQL數據庫,請根據實際情況自定義規則):Integer對映int(8),Long對應int(16),Float對應float(10,2),Double對應double(16,4),Date對應timestamp,String對應text。
VO對象中必須包括一個Integer類型的成員變量id,數據庫中相映的字段名為id,類型為int(8),主鍵,自動增長。
這裡我們只貼一些關鍵性的代碼,整體項目我已經長傳到csdn,大家可以另行下載。
首先我們建一個VO類: