【191期】JPA和MyBatis的優缺點有哪些?

# 什麼是JPA


JPA是一種規範,它簡化了現有持久化的開發,而且充分吸取了Hibernate、TopLInk、JDO等框架。SpringData JPA是全自動框架,不須要本身寫sql,固然也能夠本身寫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與其餘持久化技術的比較。app


缺點


由於sql語句是自動生成的可讀性是比較差的,對於一些高級業務或者複雜的查詢都須要本身來實現sql。


Mybatis的優缺點


優勢


上手容易、提供xml標籤、支持動態SQL編程,Mapper映射,支持對象與數據庫的ORM字段關係映射。

缺點


  • SQL語句的編寫工做量較大,尤爲是字段多、關聯表多時,更是如此,對開發人員編寫SQL語句的功底有必定要求框架

  • SQL語句依賴於數據庫,致使數據庫移植性差,不能隨意更換數據庫ide

  • 當但願對象的持久化對應用程序徹底透明是,不適合使用Mybatis大數據

  • 當數據庫有移植需求或須要支持多種數據庫時,不適合使用Mybatisspa

  • 緩存使用不當,容易產生髒數據

相關文章
相關標籤/搜索