タグ

ブックマーク / www.everes.net (1)

  • hibernateで行ロック | スパムとか

    hibernateで行ロックを行う方法のメモ やりたいこと:更新対象のレコードをロックして、更新する。 すぐに思いつくのが、Session#lock(Object, LockMode)。 Objectはhibernateのマッピングオブジェクトな訳だけれど、Sessionに存在しない(newされたオブジェクト)を使用すると、org.hibernate.TransientObjectExceptionが発生する。 DAO#get(key, session)で取得したオブジェクトを使用すると、次のようなSQLが投げられる。 select PK from TABLE where PK =? for update getしてからlockをするまでの間に、別トランザクションで直にレコードを更新をすることができるので、ロックのかけ方がおかしい(もう一度getすれば良さそうだが)。 で、ses

    p_chopin
    p_chopin 2005/11/29
    session.get(マッピングクラス.class, pk, LockMode.UPGRADE)で「SELECT 〜 for update」
  • 1