【发布时间】:2013-09-25 13:29:28
【问题描述】:
我有一个场景,我在 java 服务中使用读取一组表。 我已经注释了服务类@Transactional。
有没有可能的方法来锁定我读取的相应行,在我使用的所有表中,在我的事务中,并在事务结束时释放它?
Ps:我正在使用 spring Hibernate,我对这个锁定概念很陌生。 任何材料/示例链接都会有很大帮助
谢谢
【问题讨论】:
标签: java spring hibernate jpa transactions
我有一个场景,我在 java 服务中使用读取一组表。 我已经注释了服务类@Transactional。
有没有可能的方法来锁定我读取的相应行,在我使用的所有表中,在我的事务中,并在事务结束时释放它?
Ps:我正在使用 spring Hibernate,我对这个锁定概念很陌生。 任何材料/示例链接都会有很大帮助
谢谢
【问题讨论】:
标签: java spring hibernate jpa transactions
这取决于底层数据库引擎和选择的事务隔离级别。 一些数据库系统对读取进行锁定,而另一些则使用 MVCC,这意味着在您的事务完成之前您的更新对其他事务不可见,并且您的事务将在事务开始时获取的数据快照上运行。
所以一个简单的答案是:根据您的需要选择适当高的事务隔离级别(例如 SERIALIZABLE)和支持它的数据库引擎。
【讨论】: