iBatisについて整理
「JavaのO/Rマッパーを軽く調べてみた - oknknicの日記」で軽く触れたきりだったので、そろそろ整理しておく。
オブジェクト
- SqlMapClient: SqlMapで定義したSQLにアクセスするためのクライアントとなる、スレッドセーフなオブジェクト。SqlMapConfigを1つ指定して生成する。
SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(Resources.getResourceAsReader("conf/SqlMapConfig.xml"));
セッション(≒コネクション)
セッションは、データベースに接続開始〜終了までの単位である。
SqlMapClientは、SqlMapSessionを取得するためのopenSessionメソッドを提供している。
try { SqlMapSession session = sqlMapClient.openSession() session.startTransaction() // ... session.commitTransaction(); } finally { try { session.endTransaction(); } finally { session.close(); } }
トランザクション
トランザクションは、コミット・ロールバックのための単位で、1つのセッション内で複数(直列に)もつことができる。
並列で複数のトランザクションを走らせたい場合は、別セッションで。
SqlMapClientおよびSqlMapSessionはSqlMapTransactionManagerをスーパインターフェースとしてもつため、トランザクション制御も可能である。
try { sqlMapClient.startTransaction() // ... sqlMapClient.commitTransaction(); } finally { sqlMapClient.endTransaction(); }