0

ZKで実装しようとしている Hibernate APP がOpen Session in View Patternあります。Hibernate がスレッドごとにセッションを作成して閉じるという質問がありますが、更新メソッドを使用して実装を開始した 1 つのセッションで [基準と保存または更新] メソッドを使用した複数の操作があります。非常に迅速に悪名高い

NONUNIQUEOBJECTEXCEPTION 

以下の場合、私の質問に変更update()しました。merge()

私がStudentクラスを持っていて、学生を更新しようとしているupdate[making sure is not in session avoid the exception]が、後で他の方法で学生が前回とは異なる方法で更新する必要がある場合updatemergingメソッドmerge()が呼び出されます。メソッドがいつ[flush][commit]呼び出され、最初の学生への変更が失われるのか疑問に思っていましたか? 両方の生徒への変更は OK ですか? 何が起こるのですか??

最初の変更studentは損失です。この場合、私は何ができますか?

よろしくお願いします。

4

1 に答える 1

0

ロックアルゴリズムを見てください。楽観的と悲観的の 2 つの人気のあるものがあります。Web アプリケーションの場合、通常は楽観的ロックの方がうまく機能します。簡単に言うと、エンティティ オブジェクトの各リビジョンにはバージョン ラベルが付けられます (多くの場合、bigint または string db 列)。誰かが更新をプリエンプトし、バージョンが古くなると、休止状態は楽観的ロック例外をスローします。この場合、キャプチャしてユーザーに何をすべきかを尋ねることができます (または他の適切な手段を講じます)。

于 2013-07-11T12:40:59.920 に答える