2
比方說,我有使用原始SQL,其更新計數器的計數功能:併發Grails中使用GORM時
public void updateCounter() {
executeSql("UPDATE counter SET count_value = count_value + 1 WHERE id = 1;");
}
該數據庫將確保按預期櫃檯兩個併發處理呼叫 - 所有調用會以一個增量更新計數器,並且不會有更新丟失。
而不是通過發出原始SQL命令來執行此操作我想使用GORM。用簡單的方式做這將是沿着線的東西:
public void updateCounter() {
Counter c = Counter.get(1)
c.countValue += 1
c.save()
}
在這種情況下,我認爲,如果兩個線程調用同一時刻updateCounter()方法的更新可能會丟失。什麼是正確的「Grails/GORM-way」來處理這個併發問題?
當你說「在這裏處理併發修改」時,你是什麼意思? 你的意思是使用「合併」還是其他? 乾杯 – Mulone 2010-05-25 14:55:03