37

有人可以帮我解决何时使用@Version@Audited在 Hibernate 中的用例吗?

4

2 回答 2

47

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

@Audited用于对Hibernate Envers的实体部分执行审计功能

于 2012-11-14T07:37:28.540 回答
21

@Version- 用于实现乐观锁,见2.2.1.2。乐观锁定的版本控制。当您不希望有很多并发写入并且不想为数据库锁定付出代价时,乐观锁定很有用。

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

于 2012-11-14T07:35:03.107 回答