1、考虑高并发,若不加锁,操作同一条数据会出现后一次更改覆盖前一次提交的数据,数据丢失;
2、加锁分为乐观锁、悲观锁:
在hibernate情景下:
悲观锁的使用-----query.setLockMode("sysseq", LockMode.UPGRADE); // 加锁
session.get(Resource.class, 564l,LockMode.UPGRADE);//加锁-----前面提交的事务会失败。
乐观锁的使用----类上添加注解@OptimisticLocking(type=OptimisticLockType.VERSION)
属性(version)添加注解
@Version
@Column(name="version")
private Integer version;
原理每一次更新数据version会增1,根据version的值判断是否过期----先提交的事务会成功,同一version下事务后提交失败。