首頁>Club>
springdata jpa,mybatis plus,通用mapper
9
回覆列表
  • 1 # 先右向上看

    在 java 應用的資料庫開發中,不可避免地會使用到持久層框架,而現在開源專案中持久層框架用到最多的基本就是 iBatis、myBatis 和 Hibernate 了。這裡就重點分析下這三個框架之間的區別。

    iBatis 與 Hibernate

      iBatis 是基於SQL對映的持久層框架,相對 Hibernate 一站工的ORM解決框架來言,iBatis 算是一種半自動化的ORM實現。兩者的區別是:1.Hibernate 是當前最流行、最經典的o/r mapping框架;而 iBatis 相對 Hibernate“o/r”而言是一種“sql mapping”的orm實現。

    2.iBatis入門簡單,即學即用;而Hibernate則相對來說較為複雜,學習門檻不低,要精通門檻更高,而且怎麼設計O/R對映,在效能和物件模型之間如何權衡取得平衡,怎樣用好 Hibernate 方面需要經驗和能力都很強才行。

    3.對於具體的資料操作,Hibernate 會自動生成sql 語句,能夠在程式執行時自動生成,能夠自動建表,無論到什麼機器上,都不需要資料庫,都能自動完成遷移;而iBatis 則要求開發者編寫具體的sql 語句,且必須要有相應的資料庫表才能進行資料庫的移植。相對 Hibernate 而言,iBatis 以sql開發的工作量和資料庫移植性上的讓步,為系統設計提供了更大的自由空間。

    4.Hibernate 功能強大,資料庫無關性好,O/R(物件/關係)對映能力強,Hibernate 對資料庫結構提供了較為完整的封裝,Hibernate 的O/R Mapping實現了POJO(實體類) 和資料庫表之間的對映,以及SQL 的自動生成和執行。程式設計師往往只需定義好了POJO 到資料庫表的對映關係,即可透過 Hibernate 提供的方法完成持久層操作。程式設計師甚至不需要對SQL 的熟練掌握, Hibernate/OJB 會根據制定的儲存邏輯,自動生成對應的SQL 並呼叫JDBC 介面加以執行;而 iBatis 的著力點,則在於pojo與sql之間的對映關係。也就是說,iBatis 並不會為程式設計師在執行期自動生成sql執行。具體的sql需要程式設計師編寫,然後透過對映配置檔案,將sql所需的引數,以及返回的結果欄位對映到指定pojo。使用 iBatis 提供的orm機制,對業務邏輯實現人員而言,面對的是純粹的java物件,缺點就是框架還是比較簡陋,功能尚有缺失,雖然簡化了資料繫結程式碼,但是整個底層資料庫查詢實際還是要自己寫的,工作量也比較大,而且不太容易適應快速資料庫修改。如果涉及到資料庫欄位的修改,Hibernate 修改的地方很少,而 iBatis 要把那些sql mapping的地方一一修改。

    5.當系統屬於二次開發,無法對資料庫結構做到控制和修改,那 iBatis 的靈活性將比 Hibernate 更適合。系統資料處理量巨大,效能要求極為苛刻,這往往意味著我們必須透過經過高度最佳化的SQL語句(或儲存過程)才能達到系統性能設計指標。在這種情況下 iBatis 會有更好的可控性和表現。

    6.Hibernate 現在已經是主流O/R Mapping框架,從文件的豐富性,產品的完善性,版本的開發速度都要強於iBatis。

  • 2 # Java猿

    Jpa實現是hibernate,現在網際網路應該很少使用hibernate了,這個用起來簡單,開發快速,但是處理複雜的sql比較難。現在網際網路公司多數在用mybatis,這個框架是個半自動的,簡單易學,使用起來靈活

  • 3 # 不搞事的程式設計師老王

    每一個都有它的優勢,jpa對於一些常規的sql查詢,非常便捷,

    mybatis對於一些複雜業務,靈活的sql利於開發以及最佳化sql ,

    通用mapper這東西就是是個便捷開發外掛,看你怎麼利用了!

  • 4 # 灬亦凡

    在 java 應用的資料庫開發中,不可避免地會使用到持久層框架,而現在開源專案中持久層框架用到最多的基本就是 iBatis、myBatis 和 Hibernate 了。這裡就重點分析下這三個框架之間的區別。

    iBatis 與 Hibernate

    iBatis 是基於SQL對映的持久層框架,相對 Hibernate 一站工的ORM解決框架來言,iBatis 算是一種半自動化的ORM實現。兩者的區別是:1.Hibernate 是當前最流行、最經典的o/r mapping框架;而 iBatis 相對 Hibernate“o/r”而言是一種“sql mapping”的orm實現。

  • 中秋節和大豐收的關聯?
  • 就當代人們的審美來講,寫實油畫和抽象派油畫,哪個更受歡迎?為什麼?