在这里插入图片描述乐观锁采用的原理就是在表里边加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、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐