hibernate annotation 并发操作不冲突

hibernate annotation 处理并发非常特别,只要设置乐观锁,并发操作不会发生冲突。


alias.java:

@Version
	@Column(name="version",nullable=false,unique=true)
	private int version;


Test.java:

void updateEntity() {
		
		//测试乐观锁
		Session session1=sf.openSession();
		Session session2=sf.openSession();
		
		
		Transaction tx1 = session1.beginTransaction();
		Transaction tx2 = session2.beginTransaction();
		
		try{
		
			Alias ao1 = (Alias) session1.load(Alias.class, new Long(3));
			Alias ao2 = (Alias) session2.load(Alias.class, new Long(3));
		//这时候,两个版本号是相同的
		ao1.setAmoney(ao1.getAmoney()+10);
		tx1.commit();		
		//这时候,两个版本号是不相同的
		ao2.setAmoney(ao2.getAmoney()-10);
		tx2.commit();
		System.out.println("OK!");
		}catch(Exception e){
			System.out.println(e);
			if(tx2 != null)//有同步数据库的作用
			{
				tx2.rollback();
				//updateEntity2();
			}
			else if(tx1 != null)//有同步数据库的作用
			{
				tx1.rollback();
				//updateEntity2();
			}
			
		}finally{
			session1.close();
			session2.close();
		}
	}

前后结果对比:

                                                           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值