有人可以解释一下,为什么我们应该在Hibernate中使用@Version注释而我们已经使用了交易?事务不保证数据库的一致性吗?
答案 0 :(得分:1)
有助于阅读@Version
的 JavaDoc :
该版本用于在执行合并操作和乐观并发控制时确保完整性。
并且(如果你不知道)EntityManager.merge()
的 JavaDoc :
将给定实体的状态合并到当前持久化上下文中。
这意味着将不的交易实体添加到该交易中。
换句话说:事务用于检查短期运行操作的一致性,而@Version
用于长时间运行(分离的)操作,例如:在跨多个服务器请求编辑实体时。