Когда использовать @Version и @Audited в Hibernate?

Может ли кто-нибудь помочь мне в случае использования, когда использовать @Version и @Audited в Hibernate?

Ответ 1

@Version используется для реализации Оптимистической блокировки с Hibernate, что означает, что никакие две транзакции не переопределяют данные одновременно с конфликтом.
Если данные читаются двумя потоками одновременно, и оба пытаются обновить одну и ту же строку разными значениями, Hibernate использует поле @Version, чтобы проверить, обновлена ли строка.
Перед фиксацией каждая транзакция проверяет, что никакая другая транзакция не изменила свои данные. При изменении последней транзакции возникает ошибка "Работа с устаревшими данными".

@Audited используется для выполнения функции аудита на объектах Hiberate Envers

Ответ 2

@Version - используется для реализации оптимистической блокировки, см. 2.2.1.2. Управление версиями для оптимистической блокировки. Оптимистическая блокировка полезна, когда вы не ожидаете много одновременных записей и не хотите платить за блокировку базы данных.

@Audited - поставляется из Envers API и может использоваться для автоматического отслеживания изменений в сущностях в отдельной таблице аудита. Используйте Envers, чтобы сохранить историю изменений некоторых ваших сущностей.