這篇文章引用於知乎的一個author的觀點,原文也是直接copy,我我的以爲這篇文章最厲害的是最後的一段話,深入的見地啊!程序員
下面是原文:編程
Hibernate入門容易,掌握精通我也不敢自詡。我第一遍看Hibernate文檔的時候也以爲很吃力,但不是由於Hibernate難掌握而感到吃力,是由於Hibernate文檔到處都是持久層設計的經驗和最佳實踐。
###adv### Hibernate文檔準確的來講,絕大部份內容都在講對象的持久層設計,而不是簡單的Hibernate使用,使用問題查Java doc就夠了。因此學習Hibernate,主要是在學習持久層的設計模式,若是你把Hibernate文檔都看完了,還成天只會提那些 Hibernate的配置問題,Hibernate的類調用問題,我以爲這樣的人尚未真正的入門,算是白學了。
我對Hibernate 的那些配置也不是特別純熟,每次寫hbm,都要對照文檔一點點的檢查;類調用參數也不太記得,寫代碼也要Java doc隨時備查。
可是我在學習Hibernate的時候即集中全部精力來理解Hibernate的運行原理,集中精力來掌握持久層設計應該把握的原則和技巧,這些纔對我是最重用的東西。絕不誇張的說,學習完Hibernate,我對JDBC的編程也提升了一大截,更不要說對於J2EE架構的持久層的框架設計,基本上是瞭然於胸了,即便未來換了API,不用Hibernate的,改用JDO,Castor什麼的,這些經驗同樣照用。
學習Hibernate主要不是在學習Hibernat怎麼配置,用工具怎麼生成hbm文件,若是你把重點放在這裏,基本上等於白學了Hibernate。Hibernate的精華在於無與倫比的靈巧的對象持久層設計,這些持久層設計經驗不會由於你不用Hibernate而喪失掉,我本身學習Hibernate,已經明顯感受到對持久層設計能力已經長了不少經驗值了,這些經驗甚至不光能夠用在Java上,用在.net上也是同樣。
因此Hibernate配置的學習,我只是簡單看看,用的時候知道到那裏去查就好了,一堆複雜的生成工具我根本就看都不去看,這樣算下來,掌握Hibernate的配置,能夠用Hibernate來替代JDBC寫程序,不過花上3天時間就足夠了。我想3天時間對你來講不算很奢侈的學習代價吧。 爲何我這麼強調學習Hibernate的對象持久層設計理念呢?那就看你的理想是想一生作一個程序員呢?仍是想向更高的方向發展呢?從純作技術的角度來講,職業發展的最高點是「系統架構師」,Bill Gates不是還叫作微軟的首席系統架構師嗎?
System Architect職位須要的是你的學習和領悟能力,若是你不能把學習Hibernate獲得的設計經驗運用到其它地方,那麼你是失敗的,也沒有資格作 System Architect。
無論JDO也好,Hibernate也好,TopLink也好,CocoBase也好,仍是Castor,仍是什麼Torque,OJB,軟件的使用和配置方法能夠各異,但本質上都是ORM,都是對JDBC的對象持久層封裝,因此萬變不離其宗,若是你完整的學習和掌握Hibernate花了1個月的時間,那麼你再學習OJB的時間不該該超過1個星期,由於你已經把對象持久層設計都瞭然於胸了,你須要的只是熟悉一下OJB的API和配置罷了,至於怎麼運用OJB進行持久層的開發你早就已經熟悉了。
因此當你掌握了兩種以上的ORM,你應該可以不拘於使用的ORM軟件的限制,設計出適合於你的項目的持久層來,這纔是System Architect的水準。
用金庸小說來打個比方來講吧,張無忌學太極劍,只記劍意,不記劍招,這纔是真正的高手,而低手就只會去學習劍招,而不去領會劍招背後蘊含的劍意,因此一生都是低手,永遠不能真正學會太極劍。因此周顛看到張三丰第二次演示太極劍,招式徹底不一樣就覺得是另外一套東西,其實本質上都同樣。學習Hibernate也不要捨本逐末的去學各類五花八門的工具,重點掌握它的對象持久層設計理念。設計模式