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