乐观锁采用的原理就是在表里边加version版本控制,
<versionname=“version”
column=“VERSION”
type=“integer”
/>
例子:
创建两个session:
Session session1=SessionFactory.openSession();
Session session2=SessionFactory.openSession()
对同一个数据进行操作:
Entity entity1=new Entity();
Entity entity2=new Entity();
entity1=session1.load(Entity.class,id);
entity1.setName(“name1”);
entity1.setName(“name1”);
Transaction tran1 = session1.beginTransaction();
session1.close();
entity2.setName(“name2”);
Transaction tran2= session2.beginTransaction();
session2.close();
运行到后边的tran2提交时会报异常:org.hibernate.StaleObjectStateException异常。
之所以报这个异常,就是因为我们在Entity里边增加了version,第一个事务提交之后version=version+1