【发布时间】:2012-07-12 08:03:50
【问题描述】:
我有以下问题。 有一笔交易,下面做。
交易:
- 查看数据库,如果有可用参数的对象。
- 如果不是,则创建此对象,否则,更改对象并进行更新。
假设我们有两个并行执行的事务(T1 和 T2)。
T1 查看数据库,没有对象。 一毫秒后,T2查看数据库,也没有对象。
T1 将对象保存到数据库中,它也生成了 T2。
我们在数据库中有两个对象而不是一个。
我能解决这个问题吗?
我正在使用:Hibernate + Spring + Tomcat
谢谢。
【问题讨论】:
-
SELECT...如果您的数据库引擎支持下一个键锁定 (MySQL doc),FOR UPDATE 应该可以解决此问题。
标签: database multithreading hibernate concurrency transactions