有人可以帮助我了解在Hibernate中使用@Version
和@Audited
的用例吗?
答案 0 :(得分:22)
@Version用于通过Hibernate实现Optimistic locking,这意味着没有两个事务在发生冲突的同时覆盖数据。
如果两个线程同时读取数据,并且两者都尝试使用不同的值更新同一行,
Hibernate使用@Version
字段来检查行是否已更新
在提交之前,每个事务都会验证没有其他事务已修改其数据。
如果已修改,则最后一个事务遇到“使用陈旧数据”错误。
@Audited
用于对Hiberate auditing functionality
答案 1 :(得分:9)
@Version
- 用于实现乐观锁定,请参阅2.2.1.2. Versioning for optimistic locking。当您不期望许多并发写入并且不想为数据库锁定付出代价时,乐观锁定很有用。
@Autidted
- 来自Envers API,可用于自动跟踪单独审核表中实体的更改。使用Envers保存某些实体的更改历史记录。