业务逻辑的实现过程中,往往需要保证数据访问的排他性。因此,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的“锁”,即给我们选定的目标数据上锁,使其无法被其它程序修改。Hibernate 支持两种锁机制:1. 悲观锁(Pessim ...
业务逻辑的实现过程中,往往需要保证数据访问的排他性。因此,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的“锁”,即给我们选定的目标数据上锁,使其无法被其它程序修改。
Hibernate 支持两种锁机制:
1. 悲观锁(Pessimistic Locking)
从加载对象就开始锁定。修改过程中一直是锁。直到事务commit()提交后再解锁。
session.load(Info.class,"p003",LockOptions.UPGRADE);
public class TestPessimisticLock extends TestCase { @Test public void testLock1(){ Session session = null; try { session = HibernateUtil.getSession();//开始锁定,下面的testLock2不能执行 session.beginTransaction(); Info data = session.load(Info.class, "p003", LockOptions.UPGRADE); data.setName("1111111"); session.getTransaction().commit();//执行以后才解锁,这时testLock2才可以执行 } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } finally{ HibernateUtil.closeSession(); } } @Test public void testLock2(){ Session session = null; try { session = HibernateUtil.getSession(); session.beginTransaction(); Info data = session.load(Info.class, "p003", LockOptions.UPGRADE); data.setName("2222222"); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } finally{ HibernateUtil.closeSession(); } } }
原标题:Hibernate 悲观锁,乐观锁
关键词:Hibernate
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。