在这里插入图片描述乐观锁采用的原理就是在表里边加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=2,而第二个事务提交时,version=1<2,就会 报这个异常,数据过时

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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐