我正在研究driver-booking
管理系统。
我想要做的是我需要在driver
中添加booking table
(这意味着为驾驶员分配预订)。在此之前,我需要检查预订记录是否有与之关联的驾驶记录(预订是否已分配),如果是,则不执行任何操作。
一个用户这样做可以正常工作。
但问题是多个用户在same record, same time
上执行此操作。
如何处理这种情况。
我知道@transactional
注释。这是正确的解决方案吗?
我应该在单一方法上而不是在booking Assigning Service
上使用它吗?
使用sync block
会减慢处理速度,所以目前我反对这个选项
答案 0 :(得分:2)
可以完成多个事务而不会相互影响的乐观锁定,因此事务可以在不锁定它们影响的数据资源的情况下继续进行。在提交之前,每个事务都会验证没有其他事务已修改其数据。如果检查显示有相互矛盾的修改,则提交事务将回滚[1]。
在乐观锁定的帮助下,您可以解决您的问题。 Hibernate提供了实现它的方法。