MyBatis是一個Java的持久層框架,和Hibernate一樣,都是ORM框架。 MyBaits的前身是iBatis,可以將資料庫中記錄映射為pojo,是開發人員以面向對象編程的思想來操作資料庫。 MyBatis消除了幾乎所有的JDBC代碼、參數的手動設置、對結果集的檢索,開發人員只需要使用xm ...
MyBatis是一個Java的持久層框架,和Hibernate一樣,都是ORM框架。
MyBaits的前身是iBatis,可以將資料庫中記錄映射為pojo,是開發人員以面向對象編程的思想來操作資料庫。
MyBatis消除了幾乎所有的JDBC代碼,比如註冊驅動,獲取、關閉資料庫連接,創建Statement對象,手動設置參數,結果集檢索,這些都不需要,開發人員只需要使用xml進行簡單的配置、映射,就可以操作資料庫。
常見的封裝了jdbc的框架:DbUtils、Hibernate、MyBatis、Spring的JdbcTemplate。
ORM框架
ORM,Object Relational Mapping 對象關係映射,對象指的是pojo,關係指的是關係型資料庫中的表、記錄。
常用的ORM框架包括MyBatis、Hibernate。
MyBatis、Hibernate的區別
Hibernate是一個標準的ORM框架,是全表映射框架。
- 開發效率要高於MyBatis。開發者只需定義映射關係、pojo,Hibernate會自動生成對應的sql語句、操作資料庫的方法,開發者使用Hibernate提供的方法操作持久層就ok,不需要熟練掌握sql、不需要編寫大量代碼。
- 學習門檻高。開發者要有良好的數據關係模型基礎,需要學習複雜的hql。
- 偏死板、維護有難度。Hibernate自動生成了大量的sql語句、方法,很多都用不到,冗雜。
- 具有良好的資料庫無關性,移植性較好。更換資料庫時,比如從mysql換為oracle,只需更改方言,無需大量修改代碼。
- 適合場景不複雜、對性能要求不高的項目。Hibernate對多表關聯查詢支持較差,更新操作需要發送整個pojo對象(所有欄位),不支持儲存過程,不能進行sql優化來提高性能。
MyBatis是一個半自動映射框架。
- 編碼工作量要比HIbernate大。除了要定義映射關係、pojo,還需要自己寫sql語句、操作資料庫的方法。
- 簡單易上手。稍微有點sql基礎就行。
- 靈活、好維護。可根據需求編寫sql,支持動態sql,可以自定義映射規則、支持存儲過程。
- 不支持資料庫無關性。因為要自己編寫sql,比如查詢,mysql用limit,oracle用rownum,更換資料庫時需要修改sql語句。
- 對於複雜、對性能有要求的項目,MyBatis更合適。對關聯映射、多表查詢支持較好,因為是自己寫sql,可以通過優化sql來提高性能。