title: How to rollback/timeout “select for update” locks in Oracle?
body: <p>Our app is mostly using optimistic locking using Hibernate’ s versioning support. We are planning to implement pessimistic locking in one particular scenario. I don’t have much experience with pessimistic locking so please excuse if this question sounds naïve.</p>
  
  <p>When a user shows intention for updating an entry - we lock the corresponding DB row using “select for update”. Now, if this user takes a long time to commit his changes are forgets about it after locking, how do we unlock this lock using some timeout/rollback mechanism? So that the row doesn’t stays locked for a very long time and disallowing all other users to edit it.</p>
  
  <p>I doubt if this will be handled at Weblogic-JTA-Spring transaction mechanism we are using – where we already have a transaction timeout of 30 mins. (??)</p>
  
  <p>So, should this rollback be handled directly at Oracle level.  If yes, then how? Please advise on best way to handle this so that such locks don’t stay lingering around for too long.</p>