關於資料庫crud(create retrieve update delete)自動化協助工具輔助,其中的翹楚必然是orm(對象-關係映射)工具。
hibernate,activerecord分別可以說是發揮了java,ruby語言哲學到極致的工具,其他動態語言的orm工具大都參考這兩者的架構和模式,使用他們的前提是掌握物件導向基礎(物件導向3原則及應用)和資料庫應用基礎(設計範式和SQL語言)。
相對簡單一點的是根據資料庫中獲得的表結構實現簡單crud功能的庫,但是因為功能太簡單,對於處理表和表之間的關聯關係力不從心,在我的實際經驗中很早就廢棄了。
說回靜態語言,c++語言目前為止沒有完整案例的orm工具,因為c++標準庫並不提供完整的反射庫,只提供了基礎的RTTI。沒有反射庫就寫不出orm,所以雖然有一小撮分子研究過自己寫反射庫,再寫orm,不過都流產了,要麼就變形了——利用有限的功能變相實現部分功能,在joel的部落格上有人發了c++ orm的討論,應者寥寥,討論中說到的類庫俺看了下,都不完整。
那麼靜態語言就真的不行了?受中國億萬開發人員擁護的寶蘭公司(IDE部分已經因為入不敷出分拆出codegear公司)的王牌設計師Anders(亦為微軟設計了.net)所設計開發的vcl庫,擁有足夠的反射能力,國內一個delphi開發人員yyanghhong據此開發出了一個orm工具,據他最後javaeye的文章中說,將參考hibernate的結構實現delphi版的orm,不過也有1年多未有訊息了――可能和我一樣,1年前發布的改hibernate和tomcat的模組後,也有人問過我相關知識,但一個一直為吃飯忙乎的人是顧不上了。另有一位網友提供了一個開源的delphi orm emvc,目前只出到1.03alpha版,我還沒用過。
因為vcl庫的強悍,基於他的C++ Builder也擁有同等威力,經過我的研究,delphi和c++ builder都是有能力實現ORM的。
在一個orm盛行的年代,靜態語言沒有自身的orm是痛苦的,對於C++在開發mis功能的時候,目前有些公司採用了搭配python,用python語言的orm庫來開發。
話到這裡就結束了,不愁吃飯的話我也想打磨打磨c++的orm,呵呵。