Ibatis 與 Hibernate 的區別!

2022-05-07 15:39:11 字數 1216 閱讀 7845

hibernate:sql自動生成

上面是最大的區別,下面是一些細節.

選擇hibernate還是ibatis都有它的道理:

hibernate的特點:

ibatis的特點:

ibatis入門簡單,即學即用,提供了資料庫查詢的自動物件繫結功能,而且延續了很好的sql使用經驗,對於沒有那麼高的物件模型要求的專案來說,相當完美。ibatis的缺點就是框架還是比較簡陋,功能尚有缺失,雖然簡化了資料繫結**,但是整個底層資料庫查詢實際還是要自己寫的,工作量也比較大,而且不太容易適應快速資料庫修改。當系統屬於二次開發,無法對資料庫結構做到控制和修改,那ibatis的靈活性將比hibernate更適合。系統資料處理量巨大,效能要求極為苛刻,這往往意味著我們必須通過經過高度優化的sql語句(或儲存過程)才能達到系統效能設計指標。在這種情況下ibatis會有更好的可控性和表現。

對於實際的開發進行的比較:

2. ibatis 可以進行細粒度的優化

比如說我有乙個表,這個表有幾個或者幾十個字段,我需要更新其中的乙個字段,ibatis 很簡單,執行乙個sql update table_a set column_1=#column_1# where id=#id# 但是用 hibernate 的話就比較麻煩了,預設的情況下 hibernate 會更新所有字段。 當然我記得 hibernate 有乙個選項可以控制只儲存修改過的字段,但是我不太確定這個功能的負面效果。

例如:我需要列出乙個表的部分內容,用 ibatis 的時候,這裡面的好處是可以少從資料庫讀很多資料,節省流量select id, name from table_with_a_lot_of_column where ...一般情況下hibernate 會把所有的字段都選出來。比如說有乙個上面表有8個字段,其中有一兩個比較大的字段,varchar(255)/text。上面的場景中我為什麼要把他們也選出來呢?用hibernate 的話,你又不能把這兩個不需要的字段設定為lazy load,因為還有很多地方需要一次把整個 domain object 載入出來。這個時候就能顯現出ibatis 的好處了。如果我需要更新一條記錄(乙個物件),如果使用 hibernate,需要現把物件 select 出來,然後再做 update。這對資料庫來說就是兩條sql。而ibatis只需要一條update的sql就可以了。減少一次與資料庫的互動,對於效能的提公升是非常重要。

3. 開發方面:

4. 執行效率

在不考慮 cache 的情況下,ibatis 應該會比hibernate 快一些或者很多。

Spring 學習筆記整合 Hibernate

spring和hibernate處於不同的層次,spring關心的是業務邏輯之間的組合關係,spring提供了對他們的強大的管理能力,而hibernate完成了or的對映,使開發人員不用再去關心sql語句,直接與物件打交道。spring提供了對hibernate的sessionfactory的整合功...

Hibernate框架1 Hibernate入門

hibernate是目前最流行的orm框架。當我們採用orm框架之後,應用程式不再直接訪問底層資料庫,而是以物件導向的方式來操作持久化物件 例如建立 刪除等 而orm框架則將這些物件導向的操作轉化成底層的sql操作。orm用最直白的話來說就是 一大堆的類庫,我們用物件導向的方式來呼叫,它幫我們翻譯為...

Spring對JDBC及hibernate的支援

spring對jdbc及hibernate的支援 木馬網咖 一 作用 1.定義 spring的dao不是新發明一種技術,而是對原來技術的一種封裝,定義了一套 簡單實用的api 2.使用dao的好處 降低了業務邏輯層和具體的持久層技術 3.spring對dao的支援,定義了一套完善的異常類 1 執行時...