Hibernate 和 MyBatis 的區別?

2021-09-11 04:22:04 字數 619 閱讀 9821

當前orm框架的產品有很多,常見的有hibernate和mybatis兩種框架。

一、hibernate

是乙個全表對映的框架。通常開發者只需要定義好持久化物件到資料庫表的對映關係,就可以通過hibernate提供的方法完成持久層操作。開發者不需要熟練的掌握sql語句的編寫,hibernate會根據制定的儲存邏輯,自動生成對應的sql,並呼叫jdbc介面來執行,所以其開發效率會高於mybatis。然而hibernate自身也存在著一些缺點,例如,它在多表關聯時,對sql查詢的支援較差;更新資料時,需要傳送所有字段;不支援儲存過程;不能通過優化sql來優化效能等,這些問題導致其只適合在場景不太複雜且對效能要求不高的專案中使用。

二、mybatis

是乙個半自動對映的框架。這裡所謂的「半自動」是相當於hibernate全表對映而言的,mybatis需要手動匹配提供pojo、sql和對映關係,而hibernate只需要提供pojo和對映關係即可。與hibernate相比,雖然使用mybatis手動編寫sql要比使用hibernate的工作量大,但mybatis可以配置動態sql並優化sql,可以通過配置決定sql的對映規則,它還支援儲存過程等。對於一些複雜的和需要優化效能的專案來說,顯然mybatis更合適。

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...