我正在实施一个系统,我在其中区分SELECT ...
和SELECT ... FOR UPDATE
。
正SELECT ...
则用于读取允许处于“不正确”状态的实体(不正确 = 可能稍后更新)
SELECT ... FOR UPDATE
总是用于读取目标以编辑它的对象,因此它应该返回对象的正确状态。
现在我正在尝试执行以下操作:每当语句读取对象时SELECT ... FOR UPDATE
,将其他查询锁定SELECT ... FOR UPDATE
在同一对象上。但是,常规SELECT ...
应该仍然有效。
有没有办法只使用预定义的锁来做到这一点?我查看了数据库隔离级别,但我认为它们不是我的问题的一部分。
我正在使用 java、hibernate 和 sql 数据库。