前言
MyBatis是一個簡單,小巧但功能非常強大的ORM開源框架,它的功能強大也體現在它的快取機制上,MyBatis提供了一級快取、二級快取 這兩個快取機制,能夠很好地處理和維護快取,以提高系統的性能,本文主要講述MyBatis的架構設計思路,并且討論MyBatis的幾個核心部件以及它們之間的關系,
一、Myabtis框架設計

1.介面層—和資料庫互動的方式
MyBatis和資料庫的互動有兩種方式:
a.使用傳統的MyBatis提供的API;
b. 使用Mapper介面
2.資料處理層
資料處理層可以說是MyBatis 的核心,從大的方面上講,它要完成二個功能:
a. 通過傳入引數構建動態SQL陳述句;
b. SQL陳述句的執行以及封裝查詢結果集成List
3. 框架支撐層
3.1. 事務管理機制
事務管理機制對于ORM框架而言是不可缺少的一部分,事務管理機制的質量也是考量一個ORM框架是否優秀的一個標準,
3.2. 連接池管理機制
由于創建一個資料庫連接所占用的資源比較大, 對于資料吞吐量大和訪問量非常大的應用而言,連接池的設計就顯得非常重要,
3.3. 快取機制
為了提高資料利用率和減小服務器和資料庫的壓力,MyBatis 會對于一些查詢提供會話級別的資料快取,會將對某一次查詢,放置到SqlSession 中,在允許的時間間隔內,對于完全相同的查詢,MyBatis 會直接將快取結果回傳給用戶,而不用再到資料庫中查找,
3.4 SQL陳述句的配置方式
傳統的MyBatis 配置SQL 陳述句方式就是使用XML檔案進行配置的,但是這種方式不能很好地支持面向介面編程的理念,為了支持面向介面的編程,MyBatis 引入了Mapper介面的概念,面向介面的引入,對使用注解來配置SQL 陳述句成為可能,用戶只需要在介面上添加必要的注解即可,不用再去配置XML檔案了,但是,目前的MyBatis 只是對注解配置SQL 陳述句提供了有限的支持,某些高級功能還是要依賴XML組態檔配置SQL 陳述句,
4 引導層
引導層是配置和啟動MyBatis 配置資訊的方式,MyBatis 提供兩種方式來引導MyBatis :基于XML組態檔的方式和基于Java API 的方式,
二、MyBatis的主要構件及其相互關系
從MyBatis代碼實作的角度來看,MyBatis的主要的核心部件有以下幾個:
SqlSession 作為MyBatis作業的主要頂層API,表示和資料庫互動的會話,完成必要資料庫增刪改查功能
Executor MyBatis執行器,是MyBatis 調度的核心,負責SQL陳述句的生成和查詢快取的維護
StatementHandler 封裝了JDBC Statement操作,負責對JDBC statement 的操作,如設定引數、將Statement結果集轉換成List集合,
ParameterHandler 負責對用戶傳遞的引數轉換成JDBC Statement 所需要的引數;
ResultSetHandler 負責將JDBC回傳的ResultSet結果集物件轉換成List型別的集合;
TypeHandler 負責java資料型別和jdbc資料型別之間的映射和轉換;
MappedStatement MappedStatement維護了一條<select|update|delete|insert>節點的封裝;
SqlSource 負責根據用戶傳遞的parameterObject,動態地生成SQL陳述句,將資訊封裝到BoundSql物件中,并回傳;
BoundSql 表示動態生成的SQL陳述句以及相應的引數資訊;
Configuration MyBatis所有的配置資訊都維持在Configuration物件之中,
它們的關系如下圖所示:

三、總結
MyBatis 是一個被廣泛應用的持久化框架,一個簡單的使用示例如下所示,先創建會話工廠,然后從會話工廠中打開會話,通過 class 型別和配置生成 Mapper 介面的代理實作,最后使用 Mapper 進行持久化操作,
所有流程大體可以用一張圖來總結:

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/257433.html
標籤:其他
