MyBatis は、一次キャッシュや二次キャッシュなどの豊富なキャッシュ メカニズムを提供する優れた永続層フレームワークです。この記事では、MyBatis のキャッシュメカニズムを 1 次キャッシュから 2 次キャッシュまで包括的に分析し、具体的なコード例を示します。
MyBatis の第 1 レベル キャッシュは、ローカル キャッシュとも呼ばれる SqlSession ベースのキャッシュです。同じ SQL ステートメントを実行し、同じパラメータを渡すと、MyBatis はクエリ結果を SqlSession にキャッシュして、データベースへのクエリの繰り返しを回避し、クエリのパフォーマンスを向上させます。
デフォルトでは、一次キャッシュは有効になっています。ただし、一次キャッシュでは同じ SQL 文が同じ SqlSession で実行された場合にのみ有効となり、異なる SqlSession で同じ SQL 文が実行された場合、一次キャッシュはヒットしません。
次は、一次キャッシュのサンプル コードです。
// 获取 SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); // 执行查询 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user1 = userMapper.getUserById(1); User user2 = userMapper.getUserById(1); // 关闭 SqlSession sqlSession.close();
上記の例では、getUserById
メソッドが初めて実行されると、クエリ結果は次のようになります。 SqlSession にキャッシュされると、同じ SQL ステートメントが 2 回目に実行されると、結果は 1 次キャッシュから直接取得されます。
2 レベル キャッシュは、グローバル キャッシュとも呼ばれる、SqlSessionFactory に基づくキャッシュです。異なる SqlSession で同じ SQL ステートメントを実行する場合、2 次キャッシュを使用すると、データベースへのクエリの繰り返しを回避し、クエリのパフォーマンスを向上させることができます。
第 2 レベルのキャッシュは MyBatis 構成ファイルで構成して有効にする必要があり、対応する Mapper インターフェイスをキャッシュ用に構成する必要があります。同時に、エンティティ オブジェクトは、異なる SqlSession 間で送信できるようにシリアル化インターフェイスを実装する必要があることに注意してください。
次は、2 次キャッシュのサンプル コードです:
// 开启二级缓存// 获取 SqlSession SqlSession sqlSession1 = sqlSessionFactory.openSession(); UserMapper userMapper1 = sqlSession1.getMapper(UserMapper.class); User user1 = userMapper1.getUserById(1); sqlSession1.close(); // 开启新的 SqlSession SqlSession sqlSession2 = sqlSessionFactory.openSession(); UserMapper userMapper2 = sqlSession2.getMapper(UserMapper.class); User user2 = userMapper2.getUserById(1); sqlSession2.close();
上の例では、getUserById
メソッドの最初の実行でクエリ結果がキャッシュされます。 2 番目のレベルのキャッシュでは、同じ SQL ステートメントが 2 回目に実行されると、結果は 2 番目のレベルのキャッシュから直接取得されます。
MyBatis のキャッシュ メカニズムは、1 次キャッシュと 2 次キャッシュという 2 つのキャッシュ方法を提供します。これにより、クエリのパフォーマンスが効果的に向上し、データベースへのクエリの繰り返しを回避できます。実際の開発では、アプリケーションの状況に応じて適切なキャッシュ方法を選択し、パフォーマンスを最適化できます。
この記事の紹介によって、読者が MyBatis のキャッシュ メカニズムを十分に理解し、実際のプロジェクトに柔軟に適用できることを願っています。
以上がMyBatis キャッシュ メカニズムの詳細な分析: 1 次キャッシュと 2 次キャッシュの調査の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。