hibernate和mybatis的區別

2022-03-23 23:23:21 字數 1047 閱讀 2034

一、兩者最大的區別

針對簡單邏輯,hibernate與mybatis都有相應的**生成工具,可以生成簡單基本的dao層方法。

針對高階查詢,mybatis需要手動編寫sql語句,以及resultmap,而hibernate有良好的對映機制,開發者無需關心sql的生成與結果對映,可以更專注於流程。

二、開發難度對比

hibernate的開發難度大於mybatis,主要由於hibernate比較複雜,龐大,學習週期比較長。

mybatis則相對簡單,並且mybatis主要依賴於生氣了的書寫,讓開發者剛進更熟悉。

三、sql書寫比較

hibernate也可以自己寫sql來指定需要查詢的字段,但這樣就破壞了hibernate開發的簡潔性,不過hibernate具有自己的日誌統計。

mybatis的sql是手動編寫的,所以可以按照要求指定查詢的字段,不過沒有自己的日誌統計,所以要借助log4j來記錄日誌。

四、資料庫擴充套件性計較

hibernate與資料庫具體的關聯在xml中,所以hql對具體是用什麼資料庫並不是很關心

mybatis由於所有sql都是依賴資料庫書寫的,所以擴充套件性、遷移性比較差。

五、快取機制比較

hibernate的二級快取配置在sessionfactory生成配置檔案中進行詳細配置,然後再在具體的表物件對映中配置那種快取。

mybatis的二級快取配置都是在每個具體的表物件對映中進行詳細配置,這樣針對不同的表可以自定義不同的緩衝機制,並且mybatis可以在命名空間中共享相同的快取配置和例項,通過cache-ref來實現。

兩者比較,因為hibernate對查詢物件有著良好的管理機制,使用者無需關心sql,所以在使用二級快取時如果出現髒資料,系統會報出錯誤提示。 而mybatis在這一方面使用二級快取時需要特別小心,如果不能完全去頂資料更新操作的波及範圍,避免cache的盲目使用,否則,髒資料的出現會給系統的正常執行帶來很大的隱患。

spring整合使用持久層框架mybatis(二)

id sqlsessionfactory class org.mybatis.spring.sqlsessionfactorybean name datasource ref datasource name configlocation value classpath mybatis config....

Hibernate分頁和投影

分頁 dao 分頁查詢 param index param pagesize return public listfindbypage integer index,integer pagesize service public listfindbypage integer index,integer...

spring MVC和hibernate的結合

我們在沒有用註解寫spring配置檔案的時候 會在spring配置檔案中定義dao層的bean,這樣我們在service層中,寫setdao方法,就可以直接通過介面呼叫dao層。用了註解寫法後 在配置檔案中不用再寫dao層的bean。只需要在dao實現類中加入 repository public c...