回答編集履歴
2
参考書の情報を追記
answer
CHANGED
@@ -62,4 +62,27 @@
|
|
62
62
|
以上、ひとつの解決策として提案します。
|
63
63
|
|
64
64
|
###B のトランザクション管理(追記)
|
65
|
-
トランザクションのsuspend/resumeは、Bでやる方が開発に影響がでないでしょう。TransactionManager.status()でトランザクションの状態を取得できます。トランザクションがあればsuspend/resumeする。そして自分のトランザクションを開始する。
|
65
|
+
トランザクションのsuspend/resumeは、Bでやる方が開発に影響がでないでしょう。TransactionManager.status()でトランザクションの状態を取得できます。トランザクションがあればsuspend/resumeする。そして自分のトランザクションを開始する。
|
66
|
+
|
67
|
+
###参考書の情報(追記)
|
68
|
+
技術評論社の『改訂新版 Spring入門』を買いました。第4章のトランザクションマネージャの解説を読んでみたところ、上記のように自分でカスタムコードを書く必要がないことがわかりました。うんと簡単です。
|
69
|
+
|
70
|
+
方法
|
71
|
+
1. トランザクションマネージャを使う。
|
72
|
+
2. 外側のトランザクションを開始する。
|
73
|
+
トランザクションの伝搬属性を、PROPERGATION_REQUIREDにする。
|
74
|
+
3. 内側のトランザクションを開始する。(別に開始してください)
|
75
|
+
トランザクションの伝搬属性を、PROPERGATION_REQUIRES_NEWにする。
|
76
|
+
|
77
|
+
PROPERGATION_REQUIRES_NEWを指定することで、suspend, resumeが自動的に行われる。
|
78
|
+
(動作させて確認したわけではありません。(それじゃダメじゃん 。はい、時間が取れればやってみます。))
|
79
|
+
|
80
|
+
問題が出そうなところは以下の点です。
|
81
|
+
|
82
|
+
トランザクションマネージャーの違いによる動作の違い
|
83
|
+
同様に、DAOの違いによる動作の違い
|
84
|
+
データソースの定義による動作の違い
|
85
|
+
宣言型トランザクションの設定の間違い
|
86
|
+
|
87
|
+
|
88
|
+
どなたか、親切な方、コードサンプルをポストしてください。
|
1
追加の提案を記述
answer
CHANGED
@@ -59,4 +59,7 @@
|
|
59
59
|
**代替案**
|
60
60
|
JTAを使わないトランザクション管理。XAではないデータソースを別に用意。Connectionを取得して、Connection.commit()/.rollback()処理を行う。TransactionManagerを使わないやり方です。
|
61
61
|
|
62
|
-
以上、ひとつの解決策として提案します。
|
62
|
+
以上、ひとつの解決策として提案します。
|
63
|
+
|
64
|
+
###B のトランザクション管理(追記)
|
65
|
+
トランザクションのsuspend/resumeは、Bでやる方が開発に影響がでないでしょう。TransactionManager.status()でトランザクションの状態を取得できます。トランザクションがあればsuspend/resumeする。そして自分のトランザクションを開始する。
|