Hibernateのセッションがスレッドセーフであるかどうかを知る必要があります。しかし、明らかに、実行のためにすべてのスレッドに新しいセッションがアタッチされます。しかし、私の質問は、あるスレッドでエンティティの値を更新した場合、それは同時に実行中に他のスレッドに反映されるのでしょうか?
私の問題は、2つのスレッドから順番に更新を実行すると、値が適切に更新されますが、更新をほぼ完全に実行すると失敗します。
たとえば。テーブルの現在のステージ。
ID NAME MARKS
------- --------- --------
1 John 54
私は次のことをしようとしています:
Student student = session.load(Student.class, 1);
student.setMarks(student.getMarks() + 1);
session.update(student);
session.close();
上記のコードをループ、たとえば10で実行しようとすると、テーブル「student」の「marks」の値が適切に更新されます。つまり、値が適切な64に更新されます。
しかし、スレッド環境で同じコードを実行しようとすると、悪い結果になります。