天天看點

JPA和MyBatis的優缺點對比,你是不是都不知道有哪些?

  # 什麼是JPA

  JPA是一種規範,它簡化了現有持久化的開發,并且充分吸收了Hibernate、TopLInk、JDO等架構。SpringData JPA是全自動架構,不需要自己寫sql,當然也可以自己寫sql實作。而自動生成sql這點是優點,也是缺點,因為生成的sql可讀性差,而且一些業務比如執行邏輯删除等還是需要自己來實作sql。

  # 什麼是Mybatis

  Mybatis是一種半自動的ORM架構,它簡單易上手,沒有第三方依賴,支援對象與資料庫的ORM關系映射,将sql代碼與業務代碼分離,使得開發人員可以更自如的寫出高效的sql,不過反過來說不像SpringData JPA這種全自動的ORM架構,它需要自己實作sql語句,對開發人員的sql編寫能力要求高,雖然将sql代碼寫在xml檔案裡友善了修改和編寫,可這同時也降低了可讀性。

  JPA的優缺點

  優點

  可持久化Java對象。JPA能夠直接持久化複雜的Java對象,并能夠使用JPQL語言進行複雜的查詢。JPQL是JPA專用的查詢語言,是類似于SQL的面向對象的查詢語言。使用簡單。JPA使用注釋(Annotation)定義Java對象與關系資料庫之間的映射,而傳統的ORM多使用xml配置檔案。JPA使用起來比

二手遊戲賣号

ORM要友善。使用JPA不用關注底層使用什麼資料庫。規範标準化。JPA是JCP組織釋出的,是Java官方規定的統一的API。目前已經有多種架構實作JPA标準。使用了JPA的系統可以自由選擇遵循JPA标準的架構,并能夠自由更換。事務性、大資料量。JPA底層使用關系資料庫進行存儲,是以具備關系資料庫的特點,例如事務性、資料完整性、并發通路、大資料量等。與其他持久化技術相比,JPA有很大的技術優勢。表列出了JPA與其他持久化技術的比較。

  缺點

  因為sql語句是自動生成的可讀性是比較差的,對于一些進階業務或者複雜的查詢都需要自己來實作sql。

  Mybatis的優缺點

  上手容易、提供xml标簽、支援動态SQL程式設計,Mapper映射,支援對象與資料庫的ORM字段關系映射。

  SQL語句的編寫工作量較大,尤其是字段多、關聯表多時,更是如此,對開發人員編寫SQL語句的功底有一定要求SQL語句依賴于資料庫,導緻資料庫移植性差,不能随意更換資料庫當希望對象的持久化對應用程式完全透明是,不适合使用Mybatis當資料庫有移植需求或需要支援多種資料庫時,不适合使用Mybatis緩存使用不當,容易産生髒資料

  來源:0x9/RWqKk