Locking database edit by key name
        Posted  
        
            by Will Glass
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Will Glass
        
        
        
        Published on 2010-05-16T17:35:24Z
        Indexed on 
            2010/05/16
            17:40 UTC
        
        
        Read the original article
        Hit count: 251
        
I need to prevent simultaneous edits to a database field. Users are executing a push operation on a structured data field, so I want to sequence the operations, not simply ignore one edit and take the second.
Essentially I want to do
synchronized(key name)
{
  push value onto the database field
}
and set up the synchronized item so that only one operation on "key name" will occur at a time. (note: I'm simplifying, it's not always a simple push).
A crude way to do this would be a global synchronization, but that bottlenecks the entire app. All I need to do is sequence two simultaneous writes with the same key, which is rare but annoying occurrence.
This is a web-based java app, written with Spring (and using JPA/MySQL). The operation is triggered by a user web service call. (the root cause is when a user sends two simultaneous http requests with the same key).
I've glanced through the Doug Lea/Josh Bloch/et al Concurrency in Action, but don't see an obvious solution. Still, this seems simple enough I feel there must be an elegant way to do this.
© Stack Overflow or respective owner