JDO能給我們帶來什麼

JDO能給我們帶來什麼 - 成本,管理,快速開發,隨需應變……

(本文的版權屬作者本人,歡迎轉載,但必須註明出處和原作者)

JDO規範的出臺,給了傳統的數據庫應用,尤其是WEB方式的數據庫應用一個新的機會,就是採用透明的中間件存儲技術,減少傳統開發的繁瑣工作,提高開發和維護的效率,使我們能夠應對新的互聯網時代的日益迅速的需求變化。
從開發的角度來看,我們進行J2EE標準的Web應用開發時,如果涉及到數據庫,一般具有一定經驗的開發團隊都不會採用JSP+JDBC的方式直接進行數據庫操作,那樣做一方面工程浩大,代碼冗長,另一方面不易維護,危險性更大。一個簡單的類似下面的語句:
resultSet = preparedStatement.execute();
...
preparedStatement = connection.prepareStatement(...);
看上去沒什麼問題,但運行過程中會漸漸導致服務器死機,因爲第二條語句前面少了一句 preparedStatement.close(),這樣導致一些非JVM分配的內存永遠無法回收(因爲不歸Java的垃圾回收機制管)。這種問題就對不是非常精通JDBC的程序員來說,是非常容易犯的,最重要的是,發生這種問題後,要查出其中的問題來,在代碼量較大的情況下,你會發現這比聯合國在伊拉克的核查工作複雜得多。
因此,有經驗的開發團隊會採用一些JavaBean來包裝數據對象,這也是面向對象開發方式的需要。然而,就算是這種採用ValueObject來包裝數據庫數據的方式,依然存在以上的風險。
這只是問題的一方面,在應用開發需求越來越多的情況下,傳統的開發方式的效率和可維護性已經跟不上需要。很多公司對此只有兩種解決方案:一是擴充招人,但這樣涉及到開發水平和培訓方面的成本問題;二是推遲或取消一些相對次要的開發任務,不過這樣只會拖慢企業的發展。
就是在這樣的情況下,在國際上一些在這方面比較有經驗的企業(如Sun,IBM等)才聯合起來制定了JDO規範,以求讓開發人員擺脫這方面的風險,從複雜而繁瑣並且重複性很大的工作中解脫出來,以全新的完全面向對象的概念和業務意識來指導開發。JDO規範相對EJB來說,實現簡單而性能出衆,可大大節約公司的開發成本,因此得到很多公司的擁戴,儘管JDO1.0規範才公佈不到一年,實現JDO規範的產品卻如雨後春筍一般冒出來,比如美國(Kodo, FrontierSuite, FastObjects, etc.)、法國(Libelis LiDO)、南非(JDOGenie)、德國(JRelay)等廠商都有比較不錯的產品(從中我們可以看出Java是一個比較開放、比較國際化的東西),另外,除了這些商業產品之外,還有一些見義勇爲的壯士組成一些團隊提供免費產品(Implementation),比如TJDO,Xorm,OJB等等。

下面我們就來看看JDO到底能給我們帶來什麼。

1、節約開發成本和時間。

使用JDO,據對目前採用JDO的一些公司的統計,在開發中大概節約30%代碼量,在維護中大概節約60%的工作。儘管這些數據來自JDO產品提供商,但從用戶的角度來看,我認爲這個數字並不過分。因爲傳統的開發方式代碼量很大,導致開發人員多,開發時間長,人一多,相互的協調和溝通難度就大,開發時間長,開發人員的記憶力有限,前後代碼的連貫性一致性也會受到影響。而採用JDO後,開發人員需要寫的代碼,主要是對數據層的包裝部分,將大大減少,應用中的代碼將主要集中在業務邏輯的處理上。俗話說,做得多,錯得多,做得少,錯得少。雖然有點消極,但也說明這個事實。當我們的手工代碼變少後,出錯的機率就會小很多,就算出錯,也很容易查出來。當這些目標達到後,對JDO的一次性投入(比如購買JDO產品及相關培訓),比起傳統的開發開銷來,就會顯得微不足道。人力成本方面更是,原來三個人的工作,現在可以兩個人做(因爲工作量減少了),這就節省了一個人力的成本。

2、提高應用性能,尤其是Web應用。

JDO廠商們都在利用多年的經驗對底層數據庫操作進行了大量的優化,而這些優化,一般的程序員由於經驗和複雜性,都比較難做到,比如分佈式緩衝、JDBC2.0和JDBC3.0中的一些面向性能優化的高級處理等等。因此,我們使用JDO產品的話,就可以利用這些由廠商提供的優化來提高服務器的性能。一般的廠商都會提供很多性能調節的參數,以針對不同的具體情況。

3、更靈活的業務邏輯。

由於JDO解放了開發人員在數據底層的工作,他們可以集中精力考慮業務邏輯方面的事務,與需求方也更容易溝通,不會象原先一樣,凡聽到一個新的需求或變更時心裏首先想到的是要加多少數據表,外鍵如何關聯,越想越複雜,最終拒絕需求。採用JDO後,開發人員可以更快地實現業務邏輯,即使是做試驗,也更加方便快捷,比如想對需求方提出兩種不同的實現方案供效果比較,做起示範程序來就能迅速完成,而傳統方式中能在同樣的時間內完成一種就已經很不錯了。當開發人員可以與需求方更好地溝通後,能更準確地理解需求,並且往往能提出比較專業的意見以改善業務邏輯,這樣,對雙方都能有更好的鍛鍊。

4、有利於開發團隊的穩定。

這裏所說的穩定並不是說人員都比較固定,而是說開發中的角色比較固定,工作定位比較固定。比如關心性能的人負責映射層,他需要了解所採用的JDO產品的具體實現,以及如何將業務模型有效地映射到數據庫上,而關心代碼的人不用考慮這些細節,只需要在面向對象的數據模型(一般是一個或複雜或簡單的實體類圖)的基礎上進行業務邏輯的實現。各有各的責任,分工更明確,整體工作效率得到大大提高。也就是說,採用JDO技術後,項目開發中更容易實現任務的縱向劃分,不同類型的任務由不同的人做。而傳統的方式中,項目一般只能實現橫向的分工,一人做一塊,每一塊都是從界面到JavaBean再到數據庫全包,如果縱向劃分的話,因爲任務之間難以確定接口規範,導致大家互相抱怨,從情緒上已經影響了開發的進展,這就是爲什麼很多項目一開始都設想得很好,而具體做的時候會互相牽連,導致“無工不拖”的局面。JDO技術,由於是一種比較實際可行的規範,便項目管理者能更好地分配工作任務,相互之間更容易“劃清界限”。這樣的方式下,項目開發就不易受人員流動的影響,因爲:第一,如果走掉一名開發人員,只要補充一個人,或者將其工作分配到另一人身上,讓他明確責任,對其它開發人員的影響並不大,不象以前“走一人癱一塊”;第二,如果工作量大了,需要新加入開發人員,對其的進入工作狀態的培訓比以前簡單,因爲越來越多的人會熟悉並精通JDO規範,就象會Java一樣,有了這個基礎,只要瞭解一下業務邏輯就可以進行開發了,這也是規範化的好處。就象很多外資企業一樣,大家都是螺絲釘,人員流動性雖然大,但公司的發展卻很穩定。

5、提供更多的個人發展機會。

對開發人員來說,長年累月一成不變而又低效的工作方式是最大的殺手,是在扼殺自己的生命。採用JDO技術後,他們會看到原來開發可以如此容易,原來還有更多的業務邏輯方面的東西值得自己關注和投入精力。開發人員的思維會從底層的代碼轉移到高級的業務處理上來,因爲自己的開發方式已經有規範化的質的提升。我估計,以後會出現JDO認證之類的概念,在萬一的情況下的求職將會更加容易。畢竟一種規範帶來的東西往往是多方面的改善。當開發人員更多地思考業務方面的問題後,對需求方的業務流程往往會有更規範的意見,從而引起雙方的良性循環。以住的開發人員,常常會想爲什麼很多大公司的老闆都不是做開發而是做業務的,以後自己的出路在哪裏。其實,開發人員完全可以在開發過程中瞭解業務方面的內容,對自己以後的發展也有好處,並且,思維將會更加嚴謹,原則性更強。

以上只是JDO所能帶來的比較明顯的幾個好處,實際上還有更多的好處等待我們在使用中去發掘,去研究。在以後的文章中,我會從具體的開發過程入手,描述如何使用JDO來開發項目。

本文的版權屬於筆者本人,但歡迎轉載,前提是註明出處和原作者。另外,歡迎在我的專欄中查看我的另幾篇文章,並提出寶貴意見!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章