O thread de sessão do Hibernate é seguro?
Eu preciso saber se a sessão do Hibernate é thread thread safe ou não. Mas é óbvio que uma nova sessão é anexada a cada thread para execução. Mas minha pergunta é se, em um thread, atualizei algum valor de uma entidade, isso será refletido em outro thread durante a mesma execução em tempo?
Meu problema é quando aciono a atualização de dois threads sequencialmente, o valor é atualizado corretamente, mas quando aciono a atualização quase completamente, ela falha.
por exemplo. estágio atual da tabela.
ID NAME MARKS
------- --------- --------
1 John 54
Eu estou tentando fazer o seguinte:
Student student = session.load(Student.class, 1);
student.setMarks(student.getMarks() + 1);
session.update(student);
session.close();
Quando tento executar o código acima no loop, digamos 10, o valor de "marks" na tabela "student" é atualizado corretamente, ou seja, o valor é atualizado para 64, o que é adequado.
Mas quando tento executar o mesmo código no ambiente de threads, ele apresenta resultados ruins.