何时在Hibernate中使用@Version和@Audited?

时间:2012-11-14 07:27:19

标签: hibernate

有人可以帮助我了解在Hibernate中使用@Version@Audited的用例吗?

2 个答案:

答案 0 :(得分:22)

@Version用于通过Hibernate实现Optimistic locking,这意味着没有两个事务在发生冲突的同时覆盖数据。
如果两个线程同时读取数据,并且两者都尝试使用不同的值更新同一行, Hibernate使用@Version字段来检查行是否已更新 在提交之前,每个事务都会验证没有其他事务已修改其数据。 如果已修改,则最后一个事务遇到“使用陈旧数据”错误。

@Audited用于对Hiberate auditing functionality

的实体部分执行Envers

答案 1 :(得分:9)

@Version - 用于实现乐观锁定,请参阅2.2.1.2. Versioning for optimistic locking。当您不期望许多并发写入并且不想为数据库锁定付出代价时,乐观锁定很有用。

@Autidted - 来自Envers API,可用于自动跟踪单独审核表中实体的更改。使用Envers保存某些实体的更改历史记录。