javaプログラマー初心者です。
言葉の使い方の質問です。
先輩社員が以前
「トランザクションをつかめない」
と言っていたのですが、
それはどういう意味でしょうか?
かなり漠然な質問で状況や使っていたタイミングも覚えていないので答えにくいかもしれませんが、わかる方がいればよろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
お邪魔します。
トランザクションをつかめない、というのは確かによくわかりませんね。
少し言葉の使い方がおかしいような気がします。
ですが、トランザクションは"一続きに行われなければならない一連の処理"のことですので、トランザクションを開始できない、とかそういう意味かなと思います。
マルチスレッドやマルチプロセスで動作するプログラムの場合でもトランザクションという概念を導入しているものはありますし、リソースの変更など排他制御をする必要があればトランザクションという言葉を使うことはありますが、一般的にはデータベースでよく使用される言葉です。
例えばSQLでは
lang
1begin; 2insert into product values(....); 3insert into stock values(....); 4commit;
のようにすることがトランザクションの開始終了です。
javaでもデータベースを操作するときに、
lang
1 Class.forName("org.postgresql.Driver"); 2 Connection connection=DriverManager.getConnection("jdbc:postgresql:Training","postgres",""); 3 4 connection.setAutoCommit(false); 5 Statement statement=connection.createStatement(); 6 String sql="insert into product values(....);"; 7 statement.executeUpdate(sql); 8 9 sql="insert into stock values(....);"; 10 statement.executeUpdate(sql); 11 12 connection.commit();
のようにしますね。
上記の例のように、トランザクションを開始や終了するとき、別の処理や別のスレッドが同じテーブルを変更するトランザクションが既に開始していたとします。
その処理が何らかの影響でとても遅くなったり、同様のトランザクションを開始している処理が大量にあったりした場合、トランザクションが開始できなかったり、コミットができなくなったりします。
(排他ロックで他の処理の更新が終わるのを待ってから実行されることになる)
こういう状況の場合、「(処理が)トランザクションを(実行する機会/権限/順番)がつかめない」というような言い方をしても不思議ではありません。
参考になったかわかりませんが、以上です。
投稿2015/01/18 15:33
総合スコア540
0
意味不明の文章なので、「ロックを取れない」「ロックをつかめない」と言おうとして間違えたんじゃないでしょうか。
投稿2015/01/18 15:15
総合スコア84505
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/01/18 15:24
2015/01/18 15:50
2015/01/19 10:33
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/01/18 15:43
2015/01/18 15:51
2015/01/19 10:34