ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Spring Frameworkコミュのはじめまして

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして、このコミュニティに参加させて頂きました、
白黒猫です。

今更ながらspringのトランザクションの勉強をしておりまして
調べていましても、なかなか分かりませんでしたので、
ご教授頂けましたら、お願いいたします。

質問
書籍「SpringによるWebアプリケーションスーパーサンプル」
を読みながら、勉強をしています。

書籍には、以下のようなサンプルコードが記載されております。

抜粋-------------------------------------
public class SaleDaoImpl extends JdbcDaoSupport implements SaleDao{

private static final String INSERT = "INSERT INTO SALE(SALEID, USERID, UPDATETIME) VALUES(?, ?, ?)";

private class SalePreparedStatementSetterForInsert implements PreparedStatementSetter{

private Sale sale;

public SalePreparedStatementSetterForInsert(Sale sale){
this.sale = sale;
}

public void setValues(PreparedStatement ps) throws SQLException {
ps.setInt(1, this.sale.getSaleId().intValue());
ps.setString(2, this.sale.getUser().getUserId());
ps.setTimestamp(3, this.sale.getUpdateTime());
}
}

public void create(Sale sale) {
getJdbcTemplate().update(SaleDaoImpl.INSERT, new SalePreparedStatementSetterForInsert(sale));
}

}
-------------------------------------

この例ですと、springでのトランザクションは
制御できると思いますが、
このようなメソッドが複数あり、
複数のメソッドにまたがるようなトランザクションの制御は、
springでは、どのように行うべきなのでしょうか?


初歩的なご質問かもしれませんが、
ご教授のほどお願いします。

コメント(2)

> 白黒猫さん

Springの場合、いろいろなトランザクション管理の方法があるみたいですが、
業務APPなんかだと宣言的トランザクション管理を使用するのが一般的かな〜と。

はしょって超簡単に書いてしまうと・・・

 Daoクラス(のメソッド)を呼び出すServiceクラスをトランザクション境界に
 設定してあげると、Serviceに処理が入った時点でトランザクション開始、
 Serviceクラスを抜けるときにcommit or rollbackがかかるって寸法です。
 
 強制的にトランザクション操作を行わない限り、境界のServiceクラスで
 いくつクラス、メソッドを呼ぼうが1トランザクションになるはずです。

 上記例でServiceクラスを抜ける際のcommit,rollbackの判定ですが、
 Exceptionが投げられたらrollbackするってな具合です。
  ⇒Exceptionクラスの種類によってcommit,rollbackを制御することも設定で可能です。

OpenSessionInViewパターンとか使わない限りビジネスロジックに
トランザクション境界を設けるのが普通かな・・・。

この辺のページなんか参考になるのでは。
http://www.techscore.com/tech/Others/Spring/6.html
http://andore.com/money/trans/spring_ref_p9_ja.html

参考まで。
> そあさん

ありがとうございます。

なるほど、ポイントは「トランザクション境界」ってことですね!
勉強になります。

ありがとうございます、もう少し勉強をしてみます。
ありがとうございました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Spring Framework 更新情報

Spring Frameworkのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。