[Seasar-user:13020] [S2JDBC]Exception時のトランザクション処理
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2008年 2月 23日 (土) 10:17:50 JST
片岡と申します。
S2JDBC、SAStrutsを利用したアプリケーションを作成していますが、
トランザクション管理に関して、質問があります。
あるテーブルにinsertして、一意制約エラーだったら、updateすると
いうような処理を考えています(DBはpostgreSQLを利用)。一応、動作
するようにはなったのですが、私のトランザクション処理の理解に不安
があり、この実装で問題ないかという点を確認したいと思い、メール
しました。
【うまくいかなかったケース】
try{
int count=jdbcManager
.insert(employee)
.execute();
}catch(SEntityExistsException e){
int a=jdbcManager.update(employee).execute();
}
とすると、「current transaction is aborted, commands ignored until
end of transaction block」というエラーがでてうまくいきません。
【うまくいったようにみえるケース】
そこで、update文の部分を別メソッドにし、別トランザクションで動かす
ようにしました。
try{
int count=jdbcManager
.insert(employee)
.execute();
}catch(SEntityExistsException e){
int a=jdbcManager.update(employee).execute();
}
@RequiresNewTx
public int update(Employee employee){
return jdbcManager.update(employee).execute();
}
【質問】
これで表面上、うまく動作したように見えてはいるのですが、この実装方法で
正しいものでしょうか
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: http://ml.seasar.org/archives/seasar-user/attachments/20080223/14230f24/attachment-0001.html
Seasar-user メーリングリストの案内