Мне нужно знать, является ли сеанс Hibernate потокобезопасным или нет. Но очевидно, что к каждому потоку для выполнения присоединяется новый сеанс. Но мой вопрос: если в одном потоке я обновил какое-то значение объекта, будет ли это отражено в другом потоке во время выполнения в то же время?
Моя проблема заключается в том, что когда я запускаю обновление из двух потоков последовательно, значение обновляется правильно, но когда я запускаю обновление почти полностью, оно терпит неудачу.
для например. текущий этап таблицы.
ID NAME MARKS
------- --------- --------
1 John 54
Я пытаюсь сделать следующее:
Student student = session.load(Student.class, 1);
student.setMarks(student.getMarks() + 1);
session.update(student);
session.close();
Когда я пытаюсь запустить приведенный выше код в цикле, скажем, 10, тогда значение «отметок» в таблице «студент» корректно обновляется, т. е. значение обновляется до 64, что является правильным.
Но когда я пытаюсь запустить тот же код в многопоточной среде, это дает плохие результаты.