回答編集履歴

2

参考書の情報を追記

2016/09/23 09:19

投稿

退会済みユーザー
test CHANGED
@@ -127,3 +127,49 @@
127
127
  ###B のトランザクション管理(追記)
128
128
 
129
129
  トランザクションのsuspend/resumeは、Bでやる方が開発に影響がでないでしょう。TransactionManager.status()でトランザクションの状態を取得できます。トランザクションがあればsuspend/resumeする。そして自分のトランザクションを開始する。
130
+
131
+
132
+
133
+ ###参考書の情報(追記)
134
+
135
+ 技術評論社の『改訂新版 Spring入門』を買いました。第4章のトランザクションマネージャの解説を読んでみたところ、上記のように自分でカスタムコードを書く必要がないことがわかりました。うんと簡単です。
136
+
137
+
138
+
139
+ 方法
140
+
141
+ 1. トランザクションマネージャを使う。
142
+
143
+ 2. 外側のトランザクションを開始する。
144
+
145
+   トランザクションの伝搬属性を、PROPERGATION_REQUIREDにする。
146
+
147
+ 3. 内側のトランザクションを開始する。(別に開始してください)
148
+
149
+   トランザクションの伝搬属性を、PROPERGATION_REQUIRES_NEWにする。
150
+
151
+
152
+
153
+ PROPERGATION_REQUIRES_NEWを指定することで、suspend, resumeが自動的に行われる。
154
+
155
+ (動作させて確認したわけではありません。(それじゃダメじゃん 。はい、時間が取れればやってみます。))
156
+
157
+
158
+
159
+ 問題が出そうなところは以下の点です。
160
+
161
+
162
+
163
+ トランザクションマネージャーの違いによる動作の違い
164
+
165
+ 同様に、DAOの違いによる動作の違い
166
+
167
+ データソースの定義による動作の違い
168
+
169
+ 宣言型トランザクションの設定の間違い
170
+
171
+
172
+
173
+
174
+
175
+ どなたか、親切な方、コードサンプルをポストしてください。

1

追加の提案を記述

2016/09/23 09:19

投稿

退会済みユーザー
test CHANGED
@@ -121,3 +121,9 @@
121
121
 
122
122
 
123
123
  以上、ひとつの解決策として提案します。
124
+
125
+
126
+
127
+ ###B のトランザクション管理(追記)
128
+
129
+ トランザクションのsuspend/resumeは、Bでやる方が開発に影響がでないでしょう。TransactionManager.status()でトランザクションの状態を取得できます。トランザクションがあればsuspend/resumeする。そして自分のトランザクションを開始する。