回答編集履歴
2
参考書の情報を追記
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
追加の提案を記述
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する。そして自分のトランザクションを開始する。
|