Отключить автоматическое обновление грязных объектов в HibernateJAVA

Программисты JAVA общаются здесь
Anonymous
Отключить автоматическое обновление грязных объектов в Hibernate

Сообщение Anonymous »

Есть ли способ полностью отключить автоматическое обновление грязных сущностей?
В нашем приложении мы загружаем сущность, и некоторая бизнес-логика «симуляции» изменяет атрибут (для спящего режима этой сущности теперь грязный).
После этого мы хотим сохранить результаты моделирования в базе данных. Это мы делаем, явно вызывая resultRepo.save(result). Во всем нашем проекте мы используем эту парадигму, которую явно называем *Repo.save(..) для объектов, которые хотим сохранить.
Проблема в том, что если транзакция завершается, Hibernate теперь автоматически также сохраняет грязный объект. Как мы можем избежать этой скрытой магии?
Возможные решения:
  • Код: Выделить всё

    Transactional(readOnly=true)
    не работает, так как нам нужно сохранить результаты.
  • отсоединить объект вручную (или клонировать необходимые данные) в новый объект --> очень неудобно, поскольку у нас есть такая ситуация так много мест.
  • Установка режима спящего режима в MANUAL -> теперь все работает как положено, но

    У меня нет действительно знаешь почему?
  • Это похоже на хак, потому что я пытаюсь настроить грязное автосохранение и использовать для этого режим очистки.
В идеале должен быть явный переключатель, например org.hibernate.autoSaveDirtyEntites: false.
Если это сводит с ума: мы используем Hibernate 5.6.5 на Spring Boot 2.6.4.

Подробнее здесь: https://stackoverflow.com/questions/716 ... -hibernate

Вернуться в «JAVA»