亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

我為什么學習Hibernate

2019-11-18 12:59:00
字體:
來源:轉載
供稿:網友

  我為什么學習Hibernate
  我來談談我為什么學習Hibernate,希望對大家能有點啟發。
  
  在我做過的很多項目的過程中,我一直有一個懸而未決的問題在困擾我,那就是持久層的開發。持久層的開發一般來說要么用CMP,要么用JDBC+DAO。 CMP就不用說了,它對我來說是一種失敗的實踐,而JDBC+DAO也存在很多的困難,我很難做到把關系表記錄完整的映射到持久對象的關系上來,這主要體現在多表的關系無法直接映射到對持久對象的映射上來,可能是一個表映射多個持久對象,有可能是多個表映射一個持久對象,更有可能的是表的某些字段映射到一個持久對象,但是另外一些字段映射到別的持久對象上。而且即使這些問題都處理好了,也不能直接按照對象的方式來對持久對象(PO)編程,因為存在1:N關系的持久對象的查詢其實就是1+n次對數據庫的SQL,我曾經有一次失敗的持久層設計,結果是某個關聯很多其它持久對象的PO一查詢就是5n+1次 sql,速度慢的不得了,最后不得不整個修改底層設計,最后等于是完全拋棄了對象設計,完全是按照表字段進行操作。
  
  但是這樣做非常難受,因為系統的設計是從需求設計,系統設計這樣自頂而下的,結果都到了具體設計階段了,被持久層映射問題限制,不得不自底向上修改設計方案,又回到了按照過程進行編程的老路上來,非常的糟糕。
  
  我對這個問題思考了很久,最后終于意識到這其實是一個很經典的問題:對象和關系的映射問題。實際上自從OOP編程流行以后,就存在這個難題了,所以才有人提出關系數據庫進行重新設計,改用對象數據庫,但實際上關系數據庫并沒有被淘汰,于是就只能在上層的應用層找解決方案。這時候我明白了我需要的實際上是一種 ORM產品。
  
  我最早想到的ORM就是JDO,于是我下載了兩個JDO產品,預備認真的學習一下,但是研究了一段時間之后,我發現我對JDO非常的失望,原因如下:
  
  1、 JDO沒有一個好的開源免費實現,好的產品都是商業產品,并且在國內沒有銷售和技術支持。這就造成了JDO只有學習之用,不能把它用在實際項目中,否則的話,你把軟件賣給客戶的時候,還要告訴他,你還要另外去買一個國外的軟件產品,并且在國內沒有技術支持,出了持久層的問題,我們也解決不了,請你自己打國際長途去解決問題,你認為客戶能答應嗎?
  
  2、JDO不是一個輕量級封裝,它試圖建立一個完整的持久層框架,但是還很不完善,造成了JDO 感覺比較粗笨,很多操作方式令人覺得煩瑣和古怪。這加重了程序員學習和編程的負擔,而且封裝的太多會造成一個嚴重的問題就是一旦出現報錯信息,調試起來非常困難,你很難準確的定位錯誤究竟出在哪里,封裝的越輕,問題越輕易定位,越輕易解決,封裝的越重,問題越復雜,越找不到原因,CMP就是一個很好的例子,出了錯誤,調試起來非常困難和麻煩。
  
  3、JDO的標準很不完善,存在重大缺陷。最主要的問題體現在PO不能脫離PM(相當于 Hibernate的session)而存在,這是個非常嚴重的問題,會造成編程的時候進行大量VO的拷貝操作,煩瑣極了;另外一個重大缺陷是靜態的 POJO的Enhancer,不能運行期動態Enhance,無法進行增量編譯和調試,編程和調試起來非常煩瑣,每次都要手共運行一個工具對POJO進行 Enhance;此外還有一些缺陷,例如JDOQL不完善,映射關系的表達不夠強大等等。
  
  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讓我非凡放心,我能夠駕馭它,而不像那些過于復雜的軟件,本身框架就復雜的很,再加上不開源,出了問題也不知道怎么回事。
  
  我開辦了中國Hibernate技術專業論壇
  
  http://hibernate.fankai.com/
  
  大家假如對Hibernate有愛好,可以和我來討論

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品福利一区二区| 国产日韩精品在线播放| 成人综合网网址| 国产美女久久久| 在线观看欧美日韩国产| 国产精品一区电影| 亚洲国产成人久久| 国产精品久久久久久久久久ktv| 在线观看视频99| 亚洲欧美一区二区激情| 欧美性猛交xxxx黑人猛交| 亚洲成人久久久久| 精品无人国产偷自产在线| 97在线精品国自产拍中文| 亚洲成人久久一区| 亚洲精品网站在线播放gif| 日韩av手机在线观看| 亚洲欧美成人精品| 亚洲视频在线观看| 久热在线中文字幕色999舞| 久久99精品久久久久久青青91| 青青草一区二区| 这里只有精品在线播放| 国产精品永久免费| 日韩av电影在线免费播放| 亚洲成人黄色网| 成人国产精品久久久久久亚洲| 国产精品爱久久久久久久| 国产精品美乳在线观看| 久久久久久久久中文字幕| 日韩视频在线免费观看| 亚洲精品一区久久久久久| 亚洲精品xxx| 国产日韩中文字幕| 欧美电影免费观看网站| 亚洲成人黄色在线观看| 日韩av在线天堂网| 亚洲自拍偷拍第一页| 国产精品久久久久99| 欧美激情亚洲综合一区| 日韩视频免费大全中文字幕| 欧美激情精品久久久久久黑人| 精品国内亚洲在观看18黄| 国产成人欧美在线观看| 日韩精品亚洲视频| 亚洲免费伊人电影在线观看av| 亚洲欧美999| 欧美国产日韩一区二区三区| 欧美尺度大的性做爰视频| 福利一区视频在线观看| 国产日韩视频在线观看| 精品视频在线播放色网色视频| 精品亚洲精品福利线在观看| 亚洲网站在线观看| 亚洲欧美国产一区二区三区| 91tv亚洲精品香蕉国产一区7ujn| 国产成人一区二区三区电影| 欧美日韩国产中文字幕| 色噜噜久久综合伊人一本| 亚洲女同精品视频| 欧美一乱一性一交一视频| 日本成人黄色片| 欧美一区第一页| 色先锋资源久久综合5566| 欧美日韩美女在线观看| 欧美电影《睫毛膏》| 成人xvideos免费视频| 亚洲一区av在线播放| 亚洲人在线视频| 国产视频在线观看一区二区| 欧美日韩免费在线| 亚洲高清福利视频| 日本精品久久久久影院| 亚洲精品日韩在线| 国产美女主播一区| 午夜精品在线视频| 亚洲人成网站999久久久综合| 狠狠综合久久av一区二区小说| xxxx欧美18另类的高清| 日韩中文字幕在线观看| 国产一区二区精品丝袜| 色偷偷偷亚洲综合网另类| 久久综合亚洲社区| 午夜精品三级视频福利| 日本韩国在线不卡| 国产精品1区2区在线观看| 91精品国产91久久久久福利| 色系列之999| 日韩美女视频免费在线观看| 日韩在线高清视频| 国产ts一区二区| 久久久精品一区二区三区| 国产一区二区成人| 欧美黑人巨大xxx极品| 亚洲女人天堂成人av在线| 欧美电影免费看| 久久深夜福利免费观看| 日韩av高清不卡| 91美女福利视频高清| 国产成人精彩在线视频九色| 国产精品视频白浆免费视频| 亚洲偷熟乱区亚洲香蕉av| 国产日韩欧美夫妻视频在线观看| 亚洲aa在线观看| 亚洲午夜精品久久久久久性色| www国产精品com| 久久精彩免费视频| 国产精品美女久久久免费| 亚洲精品国产精品乱码不99按摩| 久久久久久久97| 日韩一区二区久久久| 欧美亚洲另类在线| 久久久久久久久久久成人| 亚洲成人教育av| 精品久久久久久久久国产字幕| 午夜剧场成人观在线视频免费观看| 国产精品女人久久久久久| 中文字幕成人在线| 亚洲国产97在线精品一区| 成人久久久久久| 亚洲国产精品高清久久久| 欧美日韩亚洲一区二| 国产精品久久久久久av下载红粉| 国产精品亚洲片夜色在线| 色综合色综合久久综合频道88| 成人国产精品一区二区| 国产久一一精品| 色狠狠久久aa北条麻妃| 一区二区三区视频在线| 97国产精品免费视频| 亚洲免费电影在线观看| 日韩av影院在线观看| 国产在线视频欧美| 国产成人精品久久二区二区91| 国产欧美精品va在线观看| 欧美黑人国产人伦爽爽爽| 国产精品视频播放| 欧美成人精品在线观看| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲午夜女主播在线直播| 色偷偷偷亚洲综合网另类| 欧美中文在线观看国产| 欧美一区二区三区精品电影| 亚洲xxxxx电影| 91亚洲国产精品| 国产99久久久欧美黑人| 国产小视频国产精品| 欧美日韩在线视频一区| 亚洲激情视频网站| 最近2019年中文视频免费在线观看| 日韩中文视频免费在线观看| 动漫精品一区二区| 久久精品视频网站| 欧美激情一区二区三区高清视频| 国产一区二区三区毛片| 国产精品女人网站| 国产成人综合av| 日韩精品免费在线视频| 欧美午夜精品久久久久久久| 欧美日韩xxxxx| 亚洲午夜小视频| 久久99视频精品| 亚洲欧美视频在线| 在线观看精品国产视频|