寫程序,做產(chǎn)品,過日子

          成功其實很簡單,就是強(qiáng)迫自己堅持下去

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            69 Posts :: 1 Stories :: 92 Comments :: 0 Trackbacks

          Spring 2.0無縫集成了Hibernate.提供了很多功能。但在我看來,除了整合事務(wù)管理外,很多功能都 是可有可無的。

          最典型的就是HibernateTemplate,這個類其實就是代理了Hibernate Session的所有功能。把我看得一愣一愣的。半天沒明白這個類有什么奇妙用處。我用Hiberante API已經(jīng)輕車熟路,自然不愿再學(xué)習(xí)新的API。

          它引入這個HibernateTemplate有什么作用呢?其API也不比Hibernate的API簡單啊。

          后來的測試表明Spring對Hibernate原生的API在事務(wù)支持上存在一些問題,而用HibernateTemplate,事務(wù)就運(yùn)行得很好。

          Technorati : , ,

          posted on 2007-06-11 13:53 Welkin Hu 閱讀(5872) 評論(8)  編輯  收藏

          Feedback

          # re: 怪怪的Spring HibernateTemplate 2007-06-11 14:39 aninggo
          1.HibernateTemplate提供持久層訪問模板化
          2.使用HibernateTemplate無須實現(xiàn)特定接口,它只需要提供一個SessionFactory的引用,利用aop注入到dao就可以實現(xiàn)對持久層的操作
          3.整合事物操作就已經(jīng)是它存在的最好的理由了,還想要什么?  回復(fù)  更多評論
            

          # re: 怪怪的Spring HibernateTemplate 2007-06-11 15:27 Welkin Hu
          @aninggo
          我想知道的是,和直接使用hiberate API相比,有什么好處?不用HiberateTemplate,同樣能整合事務(wù),而且一樣簡單。  回復(fù)  更多評論
            

          # re: 怪怪的Spring HibernateTemplate 2007-06-11 15:41 aninggo
          @Welkin Hu
          雖然可以通過注入使用hibernate的原生API,但是還是有風(fēng)險的,一旦該方法沒有被事務(wù)包裝起來,那么session最后就沒有辦法被自動關(guān)閉掉,這不像使用template,總可以被關(guān)閉掉,不管有沒有事務(wù)封裝。
          而且joson說過 ,template的主要目的是提供一個統(tǒng)一的持久層訪問接口.用不用完全看個人喜好,學(xué)習(xí)這個api的曲線不會太陡峭吧:)  回復(fù)  更多評論
            

          # re: 怪怪的Spring HibernateTemplate 2007-06-11 16:06 Welkin Hu
          @aninggo
          這么說主要好處是保證自動關(guān)閉session。這個的確很有用。
          至于第二點,Jason想到的是方便用戶從一種持久層技術(shù)切換到另一種。而在我們的產(chǎn)品中,持久層比較穩(wěn)定,反倒是Spring,有可能被換掉。出發(fā)點不一樣啊。  回復(fù)  更多評論
            

          # re: 怪怪的Spring HibernateTemplate 2007-06-11 17:33 aninggo
          @Welkin Hu
          并不是你沒有用它就沒有存在的必要,會有人用到的,spring不也給你了不同它的方法了么.  回復(fù)  更多評論
            

          # re: 怪怪的Spring HibernateTemplate[未登錄] 2007-06-11 21:18 netfishx
          最大的作用應(yīng)該是切換持久層框架。比如說最常見的同時用hibernate和原生jdbc,很多項目都會用到。  回復(fù)  更多評論
            

          # re: 怪怪的Spring HibernateTemplate 2007-06-12 09:07 Welkin Hu
          @netfishx
          應(yīng)當(dāng)有往這個方向努力的目的,但還達(dá)不到。原因很簡單,各個持久層的查詢語言和模型不一致,比如HQO,SQL, JDOQL, JPQL, Criteria等等。Spring的Template雖然統(tǒng)一了API的方法名和參數(shù)個數(shù),但其接收的參數(shù)本身仍是分裂的。  回復(fù)  更多評論
            

          # re: 怪怪的Spring HibernateTemplate 2007-06-15 13:24 Welkin Hu
          今天被Spring的事務(wù)管理機(jī)制耍了,不得臨時用用HibernateTemplate。一用才發(fā)現(xiàn)簡單的查詢被Spring搞復(fù)雜了,而且缺失了一些功能。
          1,不支持分頁。HibernateTemplate中有個fetch size,但沒有first result。
          2,傳入命名參數(shù)時不是一個map,而是一個名稱數(shù)組和一個值數(shù)組。
          3,傳入?yún)?shù)為null時有異常。

          當(dāng)然,解決辦法很簡單——寫一個新類擴(kuò)展HibernteTemplate。

          此外,Spring參數(shù)文檔中對HibernateTemplate的用法舉例也有問題。在它的例子中,每個DAO類都有一個HiberanteTemplate屬性,而不是每個DAO的方法自己創(chuàng)建一個新的HibernateTemplate實例。
          這種做法的主要問題在于,HibernateTemplate中的一些設(shè)置,如fetch size, max results等,可能在調(diào)用者不知情的情況下,應(yīng)用到后續(xù)查詢中。

          我現(xiàn)在更愿意把HibernateTemplate理解成Spring集成Hibernate的一個sample。想用就用,想改就改。  回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 沾化县| 永平县| 衢州市| 七台河市| 宁陵县| 玉林市| 吕梁市| 谷城县| 嘉兴市| 乌恰县| 东阳市| 澄迈县| 包头市| 新沂市| 德安县| 延寿县| 大庆市| 石景山区| 靖江市| 无棣县| 奉化市| 河西区| 尼木县| 从化市| 晋江市| 托里县| 韶关市| 芮城县| 绥江县| 龙南县| 丁青县| 肥东县| 鹤庆县| 西乌珠穆沁旗| 凤凰县| 本溪| 海林市| 建德市| 定远县| 宜城市| 汕头市|