数据库操作一次性(一次事务)

时间:2013-08-29 10:54:17

标签: hibernate spring-mvc service dao transactional

我正在研究driver-booking管理系统。 我想要做的是我需要在driver中添加booking table(这意味着为驾驶员分配预订)。在此之前,我需要检查预订记录是否有与之关联的驾驶记录(预订是否已分配),如果是,则不执行任何操作。

一个用户这样做可以正常工作。 但问题是多个用户在same record, same time上执行此操作。

如何处理这种情况。 我知道@transactional 注释。这是正确的解决方案吗? 我应该在单一方法上而不是在booking Assigning Service上使用它吗?

使用sync block会减慢处理速度,所以目前我反对这个选项

1 个答案:

答案 0 :(得分:2)

可以完成多个事务而不会相互影响的乐观锁定,因此事务可以在不锁定它们影响的数据资源的情况下继续进行。在提交之前,每个事务都会验证没有其他事务已修改其数据。如果检查显示有相互矛盾的修改,则提交事务将回滚[1]。

在乐观锁定的帮助下,您可以解决您的问题。 Hibernate提供了实现它的方法。