Java開發中MyBatis、Hibernate、Spring Data JPA應該如何選擇?

Java開發中MyBatis、Hibernate、Spring Data JPA應該如何選擇?

大家知道目前Java開發中MyBatis、Hibernate、Spring Data JPA是3個使用比較普遍的持久化框架,但是我們在實際項目中應該如何選擇呢?我們對此做一下分析。

一.簡單介紹

1.Hibernate

Hibernate是將POJO通過Xml映射文件(或註解)提供的規則映射到數據庫表上,是一種全表映射的模型,可以通過POJO直接操作數據庫。我們不需要寫SQL,只要使用HQL語言就可以了。

2.MyBatis

Mybatis是半自動的框架。之所以說它是半自動的,是因為它需要手工匹配提供POJO、SQL和映射關係,而Hibernate只需要提供POJO和映射關係即可。

3.Spring Data JPA

Spring Data JPA是在JPA規範的基礎下提供了Repository層的實現,是對ORM框架的進一步抽象封裝,它不直接代替ORM框架,默認底層使用的ORM框架是Hibernate,但可以靈活的在各種ORM框架之間切換,同時也簡化了我們對ORM框架的使用。

綜上,使用Hibernate的可以使用Spring Data JPA來簡化開發了。

我們只需要在MyBatis和Spring Data JPA之間做選擇,而這個選擇還是得看MyBatis和Hibernate的對比。

二.優缺點

Java開發中MyBatis、Hibernate、Spring Data JPA應該如何選擇?

1.MyBatis

1.1.優點

  • 它是一個半自動化的持久層框架,支持動態SQL,靈活可控。
  • 更容易掌握,入門簡單,即學即用,學習成本低。

1.2.缺點

  • 需要維護SQL和結果映射,增加了工作量。
  • 移植性差,所有的SQL語句都依賴所用的數據庫,對不同數據庫類型的支持不好。

2.Hibernate

2.1.優點

  • 不需要維護SQL和結果映射,開發工作量少。
  • 移植性好,所有的 HQL 語句與具體使用的數據庫無關。

2.2.缺點

  • 性能相對較差。
  • 學習門檻不低,精通門檻更高,學習成本高。

三.適用場景

Java開發中MyBatis、Hibernate、Spring Data JPA應該如何選擇?

1.MyBatis

  • 數據量大,高併發。
  • 表關聯比較複雜。
  • 要求對於數據庫可控性好, 可深度調優。

2.Hibernate

  • 場景不太複雜。
  • 需求變化不多。
  • 性能要求不高。

四.總結

目前來看傳統企業使用Spring Data JPA的比較多,而互聯網行業更傾向於使用MyBatis,如阿里及其旗下的很多子公司都在用MyBatis。

在實際使用時可以結合各個框架的優缺點、項目情況、研發人員的技術情況等綜合評估和選擇。

2.後續我會為大家提供更多優質內容,歡迎關注我。


分享到:


相關文章: