teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

参考書の情報を追記

2016/09/23 09:19

投稿

退会済みユーザー
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

追加の提案を記述

2016/09/23 09:19

投稿

退会済みユーザー
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する。そして自分のトランザクションを開始する。