[Mybatis] Mybatis アーキテクチャの概要

1. 全体構成図

MyBatis は、次の図に示すように、基本サポート層、コア処理層、インターフェイス層の 3 層アーキテクチャに分かれています。

ここに画像の説明を挿入

2. ベースサポート層

2.1 型変換モジュール

  • <typeAliase>タグ エイリアス メカニズムは、基本サポート層の型変換モジュールによって実装されます。
  • JDBC 型と Java 型の間の相互変換は、実パラメータのバインドと ResultSet のマッピングのシーンに反映されます。
    • SQL テンプレート バインディング ユーザーが実際のパラメーターを渡すシナリオでは、型変換モジュールが Java 型データを JDBC 型データに変換します。
    • ResultSet を結果オブジェクトにマッピングする場合、型変換モジュールは JDBC 型データを Java 型データに変換します。

ここに画像の説明を挿入

2.2 ログモジュール

MyBatis は、サードパーティのログ フレームワークを Java エコシステムに統合するためのログ モジュールを提供しており、現在、このモジュールは Log4j、Log4j2、slf4j などの優れたログ フレームワークを統合できます。

2.3 リフレクションツールモジュール

MyBatis のリフレクション ツールボックスは、Java リフレクションに基づくカプセル化の層であり、上位層のユーザーにより柔軟で便利な API インターフェイスを提供し、Java のネイティブ リフレクションに関連するメタデータをキャッシュして、リフレクション コードの実行効率を向上させ、パフォーマンスを最適化します。反射操作。

2.4 バインディングモジュール

SqlSession を通じて Mapper インターフェイスのプロキシを取得し、このプロキシを通じて関連する Mapper.xml ファイル内のデータベース操作を実行します。このようにして、一部のエラーはコンパイル時に持ち越される可能性があり、これは Binding モジュールを通じて実行されます。

2.5 データソースモジュール

永続層フレームワークのコア コンポーネントの 1 つはデータ ソースであり、MyBatis 自体は優れたデータ ソース実装セットを提供しており、これは MyBatis のデフォルト実装でもあります。MyBatis のデータ ソース モジュールは、サードパーティ データ ソースと統合するための関連インターフェイスも提供します。これにより、ユーザーにより多くの選択肢が提供され、データ ソース切り替えの柔軟性が向上します。

2.6 キャッシュモジュール

データベースは実際の世代においてまさに中核となるストレージであり、データベースのパフォーマンスは上位の業務システムのパフォーマンスに直接影響します。
多くのオンライン ビジネスは、読み取りが多く書き込みが少ないシナリオです。データベースがボトルネックに遭遇した場合、キャッシュは最も効果的で一般的に使用される方法の 1 つです (次の図を参照)。キャッシュを正しく使用すると、一部のデータベース リクエストが遮断される可能性があります。キャッシュ内の 1 つのレイヤー。データベースの一部への負荷を軽減し、システムのパフォーマンスを向上させることができます。
ここに画像の説明を挿入

MyBatis は 1 次キャッシュと 2 次キャッシュを提供しており、特定の実装は基本サポート層のキャッシュ モジュールにあります。

2.7 パーサーモジュール

mybatis-config.xml 構成ファイルと Mapper.xml 構成ファイルの解析。

2.8 トランザクション管理モジュール

通常、永続層フレームワークはデータベースのトランザクション制御を実現する一連のトランザクション管理メカニズムを提供しますが、MyBatis はデータベース内のトランザクションの単純な抽象化層を実装し、シンプルで使いやすいトランザクション インターフェイスと実装を提供します。一般に、Java プロジェクトは Spring を統合し、Spring フレームワークがトランザクションを管理します。

3. コア処理層

コア処理層は MyBatis のコア実装であり、MyBatis の初期化と SQL ステートメントを実行するプロセス全体が含まれます。

3.1 構成分析

MyBatis には、構成情報を追加できる 3 つの場所があります。すなわち、mybatis-config.xml 構成ファイル、Mapper.xml 構成ファイル、および Mapper インターフェースの注釈情報です。MyBatis の初期化プロセス中に、構成情報がロードされ、解析後に取得された構成オブジェクトが Configuration オブジェクトに保存されます。

3.2 SQL 解析およびスクリプト モジュール

MyBatis の最大の目玉は動的 SQL 機能で、MyBatis が提供するタグを使用するだけで、実際の動作条件に応じて実行する実際の SQL 文を動的に生成できます。MyBatis が提供する動的 SQL タグは、<where> タグ、<if> タグ、<foreach> タグ、<set> タグなどを含む非常に豊富です。

MyBatis のスクリプト モジュールは、SQL を動的に生成するコア モジュールです。実行時にユーザーによって渡された実際のパラメータに従って動的 SQL 内のタグを解析し、S​​QL テンプレートを形成してから、SQL テンプレート内のプレースホルダを処理し、実行時にプレースホルダに実際のパラメータを入力して、データベースの実際の実行可能ファイル SQL ステートメント。

3.3 SQLの実行

SQL ステートメントを実行するには、Executor、StatementHandler、ParameterHandler、ResultSetHandler などの多くのコンポーネントが関係します。

このうちExecutorはトランザクション管理モジュールを呼び出してトランザクション関連の制御を実現すると同時に、キャッシュモジュールを通じて一次キャッシュと二次キャッシュを管理します。SQL文の実際の実行はStatementHandlerによって実現されます。StatementHandler は、まず ParameterHandler に依存して SQL テンプレートの実際のパラメータをバインドし、次に java.sql.Statement オブジェクトが SQL ステートメントとバインドされた実際のパラメータを実行のためにデータベースに渡し、データベースから ResultSet を取得します。 Java オブジェクトに変換されて呼び出し元に返される、これが SQL 実行モジュールの中核です。

ここに画像の説明を挿入

3.4 プラグイン

多くの成熟したオープンソース フレームワークは、さまざまな方法でスケーラビリティを提供します。フレームワークのネイティブ機能が特定のシナリオに対応できない場合、そのようなフレームワークが十分な活力を持つことができるように、ニーズを満たすためにこれらのシナリオ用にいくつかのプラグインを実装できます。これは、MyBatis プラグイン インターフェイスの存在の意味でもあります。

4. 界面層

インターフェイス レイヤーは、MyBatis が呼び出しに対して公開するインターフェイスのコレクションです。これらのインターフェイスは、SqlSession インターフェイス、SqlSessionFactory インターフェイスなど、MyBatis を使用するときに最も一般的に使用されるインターフェイスの一部です。その中核となるのは SqlSession インターフェイスで、これを通じて Mapper エージェントの取得、SQL ステートメントの実行、トランザクション スイッチの制御など、多くの機能を実現できます。

おすすめ

転載: blog.csdn.net/u011397981/article/details/132012760