作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
def check(){
println"start first"
Domain1 domain1=Domain1.get(1);
domain1.lock();
println "locking started"
sleep(20*60)
println "save first"
domain1.name="hari ram"
domain1.save();
println "save first completed"
}
def check2(){
try {
println"start second"
Domain1 domain1=Domain1.get(1);
println"save second"
domain1.name="hari ram -------------------++++++++"
domain1.save(flush:true,failOnError:true);
println "save second completed"
}
catch(Exception ex){
ex.each{
println "error ${ex}"
}
}
}
start first
locking started
start second
save second
save second completed
save first
save first completed
最佳答案
您是否在同一 session 中调用check
和check2
? lock()
方法选择要更新的行(在数据库级别),但是如果您进入同一 session 并尝试获取同一对象,则应该从休眠 session 中获取它,而不是进入数据库并必须等待被释放的行。
我不是很肯定这是您的问题,但是看起来您的代码是正确的(尽管在此示例中,您最好同时使用Domain.lock(1)
来获取和锁定它,但分别进行两次调用没有任何错误) 。
关于hibernate - Grails中的悲观锁定3+ lock(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45860128/
我正在编写一个 Web 应用程序,两个不同的用户可以在其中更新事物列表,例如待办事项列表。我已经意识到,乐观锁定机制效果最好,因为我不希望出现高争用情况。 我一直在查看事务隔离级别,现在我有点困惑。看
我是一名优秀的程序员,十分优秀!