寫程序,做產品,過日子

          成功其實很簡單,就是強迫自己堅持下去

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

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

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

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

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

          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無須實現特定接口,它只需要提供一個SessionFactory的引用,利用aop注入到dao就可以實現對持久層的操作
          3.整合事物操作就已經是它存在的最好的理由了,還想要什么?  回復  更多評論
            

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

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

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

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

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

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

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

          當然,解決辦法很簡單——寫一個新類擴展HibernteTemplate。

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

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


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


          網站導航:
           
          主站蜘蛛池模板: 湟中县| 锡林郭勒盟| 洛南县| 集安市| 德州市| 灵寿县| 株洲市| 卫辉市| 黔东| 嘉善县| 洛隆县| 中卫市| 黑龙江省| 波密县| 富平县| 尚义县| 博湖县| 玛纳斯县| 鄂温| 当雄县| 炉霍县| 桑植县| 桓台县| 五河县| 南和县| 芒康县| 长沙县| 临西县| 马龙县| 马鞍山市| 朔州市| 大关县| 宁武县| 通山县| 视频| 开原市| 怀柔区| 扎赉特旗| 饶平县| 正宁县| 罗江县|