4、JDO產品的分裂。這個問題也比較嚴重,由于JDO1.0標準的缺陷,而JDO2.0標準還遙遙無期,而各個JDO廠商為了能夠在競爭中脫穎而出,那么除了在易操作性和性能上的提高之外,想要吸引客戶,就必須有自己的產品特色。那么1.0標準的缺陷正好給了他們發揮的舞臺,每個廠商都會有自己獨到的解決方案來解決標準的缺陷,然而這卻造成了JDO 產品事實上的分裂。這種分裂嚴重到什么程度?我可以簡單舉個例子:你寫好的POJO,用一種JDO的Enhancer進行Enhance過以后得到的 PO,在另一個JDO產品上跑不起來。這很像當年Unix的分裂,結果就是二進制代碼級的不兼容,而只能在C源代碼級兼容,F在的JDO也有這樣的趨勢,就像App Server的差別一樣,一個在Weblogic上開發好的EJB,移植到Websphere,你一定需要重新進行配置。
我心目中的ORM最好有如下的特點:
1、開源和免費的License,我可以在需要的時候研究源代碼,改寫源代碼,進行功能的定制。
2、輕量級封裝,避免引入過多復雜的問題,調試容易,也減輕程序員的負擔。
3、具有可擴展性,API開放,當本身功能不夠用的時候,可以自己遍碼進行擴展。
4、開發者活躍,產品有穩定的發展保障。
拋棄了JDO以后,我根據上面的原則,先后排除了TopLink,CocoBase,Castor等,最后選擇了Apache OJB和Hibernate。
OJB的排除很容易做出,一是因為它的文檔太簡單,太少;二是因為OJB計劃下一個版本全面支持JDO,它的API會有重大變動,所以現階段學習OJB是個錯誤,等它的API穩定了以后再學習不遲。
Hibernate的發現是很偶然的事情,只是在別人提到JDO的產品中,附帶提了提而已,但當我開始研究Hibernate之后,我發現終于找到了我夢寐以求的ORM了。
Hibernate 完全符合我上面提到的標準之外,也解決掉了JDO的所有缺陷,而且方式之優雅令人贊嘆。Hibernate的文檔也是非常非常有特色的地方,它不僅僅是 Hibernate的功能介紹那么簡單,它實際上是一個持久層設計的最佳實踐的經驗總結,文檔里面的例子,文檔里面的總結全部都是最佳設計的結晶。我認真的把Hibernate讀下來的感覺就是,不單單把Hibernate掌握住了,而且對持久層的設計的經驗都長了一大塊,以前可從來沒有覺得持久層的設計還有那么多的學問,也由此感覺到Gavin絕對是一個大牛人。
當然選擇Hibernate最最重用的原因是Hibernate是一個我能夠完完全全駕馭的了的軟件。Hibernate的源代碼非常少,而且寫的非常簡潔,我總覺得挺奇怪的,這么少的源代碼能夠實現這么多的功能,是個奇跡。Hibernate的源代碼樹分的很清楚簡單,源代碼很易讀,我一旦碰到文檔中沒有講到的問題,或者文檔中提到但是我搞不清楚的地方,我就去源代碼中找,所有的問題都豁然開朗,而且讓我對Hibernate的運行原理和細節搞的特別清楚,好像Hibernate就像自己寫的代碼一樣,很清楚的知道,怎么寫程序可以讓Hibernate運行效率最高,最省內存,程序出了錯誤,很清楚的知道是什么地方的問題,怎么解決。所以用Hibernate讓我特別放心,我能夠駕馭它,而不像那些過于復雜的軟件,本身框架就復雜的很,再加上不開源,出了問題也不知道怎么回事。
來源:http://shcxd.spaces.msn.com/Blog/cns!1BDD5C6555B96C47!155.entry
文章來源于領測軟件測試網 http://www.kjueaiud.com/