- - PR -
Spring トランザクションについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-04-11 20:48
みーちくです。
現在下記の構成でアプリを作成しております。 Springは、始めたばかりですので、参考書をまねて 作成している状態です。 下記のように設定した場合、コミットはされるのですが、 ロールバックがされません。
また、下記のように設定した場合、ロールバックはされるのですが、 コミットはされません。
Springのトランザクション管理は、どのようになっているのでしょうか? 宜しくお願い致します。 構成:WindowsXP,Eclipse3.2,Spring2.2,MySQL5.0,JDK5.0 | ||||||||
|
投稿日時: 2007-04-12 00:46
Springはさわったことがないので単なる戯言です。
通常JDBCなどではAutoCommitプロパティがTRUEに設定されている場合、 変更処理を行う文の実行後に自動的にコミットされます。(ディフォルト) 逆にAutoCommitプロパティをFALSEに設定した場合は明示的にコミット処理を する必要があります。 最初の例ではAutoCommitされているためロールバックされず、 次の例ではAutoCommitプロパティがFALSEに設定されているため 自動でコミットされないのではないでしょうか。 そんなの百も承知で、Springのトランザクションの分離レベルや トランザクションの振る舞いの詳細が知りたいとかいうレベルの 話でしたら、お邪魔しました。 | ||||||||
|
投稿日時: 2007-04-12 13:39
LazyConnectionDataSourceProxyを使用している意味はありますか?
DataSourceProxyは既存のプログラムの改修作業などで、どうしても使わなければいけない 場合のみの利用が好ましいとされているみたいです。 (TransactionAwareDataSourceProxyなどを見ると) トランザクション管理はTransactionTemplateやPlatformTransactionManagerを 見ると、幸せになれるかも? | ||||||||
|
投稿日時: 2007-04-12 14:42
みーちくです。
fuifuiさん、フライトさん 返信ありがとうございました。 LazyConnectionDataSourceProxyは、defaultAutoCommit=false に設定したかったので、使用しております。 また、いろいろ設定ファイルを修正してみのですが、 正規表現での記述が間違っていたようです。 xxxxServiceがある場合、下記のように正規表現で記述していのですが、 これを、Bean名称をちゃんと記述した場合、ちゃんと動作しました。 「*InsertService*,*UpdateService*」→「UserInsertService,UserUpdateService」 Springはむずかしいですね TransactionTemplate、PlatformTransactionManagerを調べてみます。 ありがとうございました。 |
1