質問編集履歴
4
お礼
title
CHANGED
File without changes
|
body
CHANGED
@@ -19,4 +19,7 @@
|
|
19
19
|
// データベースの更新 - 複数のSQLを実行する。
|
20
20
|
// データベースを commit/rollbackする。
|
21
21
|
}
|
22
|
-
```
|
22
|
+
```
|
23
|
+
データベースセッション(トランザクション)に複数スレッドが相乗りしてもよいのか?が、質問の趣旨だったということに気づきました。質問の仕方が悪かったのでしょうか、ステレオタイプな答えしか返ってこなかったので、やる気をなくしました。
|
24
|
+
|
25
|
+
少し視野を広げてConcurrencyについて自分で調べることします。皆様ありがとうございました。
|
3
Connecttionを訂正
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
スレッドセーフとトランザクションとは分けて考えるべきでしょうか?わからなくなってきました。たとえば、次のようなコードが書けると思います。これでもよいのか?
|
15
15
|
|
16
16
|
```Java
|
17
|
-
|
17
|
+
Connection conn = ...
|
18
18
|
synchronized(conn) {
|
19
19
|
// データベースの更新 - 複数のSQLを実行する。
|
20
20
|
// データベースを commit/rollbackする。
|
2
スレッドセーフとトランザクションについて
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,4 +9,14 @@
|
|
9
9
|
2) autocommit falseで、自分でcommit/rollbackする場合は、悲惨なことになりそうです。
|
10
10
|
|
11
11
|
私はこのくらいしか思い浮かばないのですが、その他に、考えなければならない要素がありますか?
|
12
|
-
答えを募集します。
|
12
|
+
答えを募集します。
|
13
|
+
|
14
|
+
スレッドセーフとトランザクションとは分けて考えるべきでしょうか?わからなくなってきました。たとえば、次のようなコードが書けると思います。これでもよいのか?
|
15
|
+
|
16
|
+
```Java
|
17
|
+
Connecttion conn = ...
|
18
|
+
synchronized(conn) {
|
19
|
+
// データベースの更新 - 複数のSQLを実行する。
|
20
|
+
// データベースを commit/rollbackする。
|
21
|
+
}
|
22
|
+
```
|
1
JDBCの仕様を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
「java.sql.Connectionはスレッドセーフか」と聞かれたらどう答えますか。
|
2
2
|
|
3
|
+
まず、Webで調べてみると、JDBCの仕様はスレッドセーフとしているようです。実装がどうかはわかりませんが。
|
4
|
+
|
5
|
+
では、スレッドセーフだとして、マルチスレッドで使ってよいのか?
|
6
|
+
|
3
7
|
autocimmtとの関連があると思います。
|
4
8
|
1) autocommit true の場合は、複数のスレッドで共有してもよさそうに思います。
|
5
9
|
2) autocommit falseで、自分でcommit/rollbackする場合は、悲惨なことになりそうです。
|