[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 11718] ズームイン Java の Item4 で



  高橋(智)です。
  昨日のズームインJavaの部、お疲れ様でした。
  私が担当したItem4で、Item4に書かれている内容に対して私が提起した
疑問点ですが、議事録がないので書いておきます。

  JDBCでSELECTしたResultSetの行数を取得する場面で、以下のように
書いた場合、
  -----------------------------------------------------------------
  Statement st = ...;
  ResultSet rs_count = st.executeQuery("SELECT COUNT(*) from tbl");
  int count = rs_count.getInt(1);
  ResultSet rs = st.executeQuery("SELECT * from tbl");
  for(int i = 0; i < count; i++)
  {
    ...
  }
  -----------------------------------------------------------------
二つの executeQuery の間に、別のクライアントからtblを変更(行追加とか)
されることがあるので、全体をtransactionで囲むようにする、と紹介されて
いました。でも、transaction の isolation level については、何ら言及
されていません。
  実際のところ、isolation level を考慮すべきでしょうか? > みなさま

-- 
高橋智宏
  Java読書会( http://www.javareading.com/bof/ )