MyBatisでの遅延ローディングの問題の取り扱い方法は何ですか?
MyBatisでは、パフォーマンス問題を解決するために遅延ロードを使用できます。遅延ロードとは、特定のオブジェクトが必要になった時にのみデータベースから情報を取得することを指します。MyBatisでは、遅延ロードを実現するための2つの方法があります。
- 懒ローディングを使用すると、MyBatisのマッピングファイルで設定し、親オブジェクトをクエリするときには関連オブジェクトの情報は即座に取得されず、関連オブジェクトを使用する必要があるときにのみクエリされます。例えば:
<resultMap id="userMap" type="User">
<id property="id" column="id"/>
<result property="name" column="name"/>
<collection property="articles" ofType="Article" column="user_id" select="selectArticles" fetchType="lazy"/>
</resultMap>
- MyBatisの設定ファイルで遅延ローダーを設定し、必要なところで手動で遅延ローダーを呼び出して遅延ロードを行う。例えば:
User user = sqlSession.selectOne("selectUser", 1);
LazyLoader lazyLoader = new LazyLoader() {
@Override
public void load() {
user.setArticles(sqlSession.selectList("selectArticles", user.getId()));
}
};
user.setLazyLoader(lazyLoader);
必要なときにのみ関連オブジェクトの情報をクエリすることができるため、検索性能を向上させることができます。