Java 锁定选择以进行更新,但不要';t锁定常规选择
我正在实施一个系统,在这个系统中,我区分Java 锁定选择以进行更新,但不要';t锁定常规选择,java,database,hibernate,locking,Java,Database,Hibernate,Locking,我正在实施一个系统,在这个系统中,我区分SELECT…和SELECT。。。用于更新 常规的SELECT…用于读取允许处于“不正确”状态的实体(不正确=可能在稍后更新) 选择。。。FOR UPDATE始终用于读取对象,目标是对其进行编辑,因此它应该返回对象的正确状态 现在我试着做以下几点: 每当通过选择按钮读取对象时。。。对于UPDATE语句,锁定其他选择。。。用于对同一对象进行更新查询。但是,常规的SELECT…仍然可以工作 有没有办法只使用预定义的锁来实现这一点? 我研究了数据库隔离级别,但我
SELECT…
和SELECT。。。用于更新
常规的SELECT…
用于读取允许处于“不正确”状态的实体(不正确=可能在稍后更新)
选择。。。FOR UPDATE
始终用于读取对象,目标是对其进行编辑,因此它应该返回对象的正确状态
现在我试着做以下几点:
每当通过选择按钮读取对象时。。。对于UPDATE
语句,锁定其他选择。。。用于对同一对象进行更新
查询。但是,常规的SELECT…
仍然可以工作
有没有办法只使用预定义的锁来实现这一点?
我研究了数据库隔离级别,但我不认为它们是我问题的一部分
我正在使用java、hibernate和sql数据库。选择更新不会锁定MySQL。它在Oracle、Postgres和MS SQL中起作用。您不需要做任何事情吗?更新的
将锁定必要的行,直到您提交或回滚。无需在Java中执行显式锁定。另外,当你说sql数据库时,你是指sql Server吗?数据库产品:mysql for update将锁定行,但它也将锁定它们以进行常规选择,这不是我的意图。对的