使用JPA乐观锁定,我们可以通过@Version字段进行控制,如果数据库表已被另一个事务同时更新,则允许将可靠数据存储在数据库中。
如果Java应用程序只有一个CRUD服务负责数据库中的特定实体,我们可以同步其方法并管理信息存储在数据库中的顺序。
所以我的问题是,这些场景之间有什么区别?是否存在任何绩效优势甚至最佳实践?
答案 0 :(得分:2)
方法同步的缺点:
答案 1 :(得分:1)
将同步视为悲观锁定:您必须在开始工作之前保留锁定,而不是仅在完成工作时检查是否违反了锁定(提交期间的乐观锁定)。 这两者的目的非常不同:
一般情况下:不要使用同步来锁定实体,JPA中存在悲观锁定支持锁定实际数据库行:http://docs.oracle.com/javaee/6/tutorial/doc/gkjiu.html