MyBatis的發展和選型

xlecho編輯整理,歡迎轉載,轉載請聲明文章來源。歡迎添加echo微信(微信號:t2421499075)交流學習。 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這纔是真正的堪稱強大!!html


參考文章列表:java

數據層框架的發展史

JDBC編碼的幾大問題和MyBatis等框架的發展支持緣由? 在最初編寫JDBC鏈接數據庫的時候,各類代碼操做較爲複雜,並且有不少缺陷。缺陷總結以下:程序員

  • 方法的封裝問題
  • 數據源的支持
  • 映射結果集的接收和處理
  • SQL語句硬編碼
  • 程序參數只能按照順序傳入(佔位符)
  • 沒有實現實體類到數據庫記錄的映射
  • 沒有提供緩存等功能

工具類封裝的出現解決了一部分問題

相應的工具類如:springjdbc、jdbcutils、Apache DbUtils等。這樣的工具類主要解決了一下幾個問題:spring

  • 方法的封裝
  • 數據源的支持
  • 映射結果集

工具類的響應實現解決了部分JDBC的缺陷,可是並不完美。每一次的改進和工具類的出現的就是咱們框架的前身出現,框架也是工具。在愈來愈完善的解決方案的出現以後,ORM框架基本就成型了。同時解決了以上JDBC列出來的各類問題。sql

ORM框架,全稱Object Relational Mapping,對象關係的映

面向對象的開發方法是當今企業級應用開發環境中的主流開發方法,關係數據庫是企業級應用環境中永久存放數據的主流數據存儲系統。對象和關係數據是業務實體的兩種表現形式,業務實體在內存中表現爲對象,在數據庫中表現爲關係數據。內存中的對象之間存在關聯和繼承關係,而在數據庫中,關係數據沒法直接表達多對多關聯和繼承關係。所以,對象-關係映射(ORM)系統通常以中間件的形式存在,主要實現程序對象到關係數據庫數據的映射。數據庫

ORM框架的基本準則

  • A. 簡單:ORM以最基本的形式建模數據。好比ORM會將MySQL的一張表映射成一個Java類(模型),表的字段就是這個類的成員變量
  • B. 精確:ORM使全部的MySQL數據表都按照統一的標準精確地映射成java類,使系統在代碼層面保持準確統一
  • C.易懂:ORM使數據庫結構文檔化。好比MySQL數據庫就被ORM轉換爲了java程序員能夠讀懂的java類,java程序員能夠只把注意力放在他擅長的java層面(固然可以熟練掌握MySQL更好)
  • D.易用:ORM包含對持久類對象進行CRUD操做的API,例如create(), update(), save(), load(), find(), find_all(), where()等,也就是講sql查詢所有封裝成了編程語言中的函數,經過函數的鏈式組合生成最終的SQL語句。經過這種封裝避免了不規範、冗餘、風格不統一的SQL語句,能夠避免不少人爲Bug,方便編碼風格的統一和後期維護。

最先的ORM框架hibernate

Hibernate是一種ORM框架,全稱爲 Object_Relative DateBase-Mapping,在Java對象與關係數據庫之間創建某種映射,以實現直接存取Java對象!編程

  • Hibernate 優點緩存

    • 類別到數據庫表格中,而且不用編寫任何代碼。
    • 爲在數據庫中直接儲存和檢索 Java 對象提供簡單的 APIs。
    • 若是在數據庫中或任何其它表格中出現變化,那麼僅須要改變 XML 文件屬性。
    • 抽象不熟悉的 SQL 類型,併爲咱們提供工做中所熟悉的 Java 對象。
    • Hibernate 不須要應用程序服務器來操做。
    • 操控你數據庫中對象複雜的關聯。
    • 最小化與訪問數據庫的智能提取策略。
    • 提供簡單的數據詢問。
  • Hibernate 響應的一些問題服務器

    • 沒法自定義SQL,優化相對困難
    • 不制動動態的SQL
    • 複雜的表關係會致使Hibernate開發難度
    • 加載問題

什麼是 MyBatis?

是一款面向對象和返回集關係的數據層封裝,有效的減小jdbc的代碼。微信

  • 缺點:
    • 不方便移植,數據庫更換須要字段比較麻煩,須要改寫sql
    • 對開發人員所寫的SQL依賴很強。
  • 優勢:
    • 使用鏈接池對鏈接進行管理
    • SQL和代碼分離,集中管理
    • 參數映射和動態SQL
    • 結果集映射
    • 緩存管理
    • 重複SQL的提取
    • 插件機制
    • 手寫sql,可以有效的精準把控查詢的速度,便於優化查詢速度
    • mybatis不會對應用程序或者數據庫的現有設計強加任何影響
    • 經過提供DAO層,將業務邏輯和數據訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。
    • 保證名稱相同,配置好映射關係便可自動映射或者,不配置映射關係,經過配置列名=字段名也可完成自動映射。

什麼是 Spring Data JPA(本文JPA只寫Spring Data JPA)

Spring Data JPA是更大的Spring Data系列的一部分,能夠輕鬆實現基於JPA的存儲庫。此模塊處理對基於JPA的數據訪問層的加強支持。它使構建使用數據訪問技術的Spring驅動應用程序變得更加容易。

選擇什麼樣的ORM框架參考:

  • 業務相對簡單項目可使用Hibernate
  • 須要靈活SQL的選擇可使用MyBatis(SQL過長和SQL很複雜的狀況)
  • 對性能要求比較高可使用JDBC(如:咱們寫的項目很小,或者說就是須要幾個接口,這個時候咱們選擇框架就會過於臃腫和複雜)
  • Sping JDBC能夠和 ORM框架混合使用(這種狀況不多,可是若是某些業務可能單獨須要數據源對接某一個接口,這個時候可能要適配器兼容JDBC接入)

作一個有底線的博客主

原文出處:https://www.cnblogs.com/xlecho/p/11521653.html

相關文章
相關標籤/搜索