При работе с ORM необходимо учитывать транзакцию. ORM работает в рамках транзакции и, как правило, сохраняет изменения в БД, когда 1) tx завершает работу, 2) попадает в какой-то внутренний маркер или 3) когда ему специально дается указание сбросить в БД, так как Дж. Б. Низет отметил.
Если ваш код зависит от конкретного состояния БД для данного объекта, например, другая часть вашего кода возвращается в БД для получения данных, и эта часть кода зависит от того, находится ли этот объект в определенном состоянии Возможно, вам придется вернуться к своему коду и переосмыслить, как он написан. Возможно, вызовы должны выполняться в разных транзакциях, или объекты на вашем уровне ORM могут иметь отношения, которые не были установлены в ваших объектах (например, OneToMany
).
В общем, вам действительно не нужно делать руководство flushes
; ORM, как правило, очень компетентны для учета зависимостей при сбросе в базу данных. Фактически, из моего собственного опыта я обнаружил, что при правильной настройке сущности я кодировал только руководство flushes
при выполнении пакетного кодирования, согласно руководству Hibernate.