ss3ex中Hibernate的乐观锁使用

Hibernate支持乐观锁。当多个事务同时对数据库表中的同一条数据操作时,如果没有加锁机制的话,就会产生脏数据(duty data)。Hibernate有2种机制可以解决这个问题:乐观锁和悲观锁。这里讨论乐观锁。
Hibernate乐观锁,能自动检测多个事务对同一条数据进行的操作,并根据先胜原则,提交第一个事务,其他的事务提交时则抛出org.hibernate.StaleObjectStateException异常。
要实现Hibenate乐观锁,我们首先要在Entity类里增加一个版本控制字段,字段名随意,比如就叫version,对应hibernate类型只能为long,integer,short,timestamp,calendar,也就是只能为数字或timestamp类型。然后在字段上面加个@Version注释,如:
@Version
private Long version;

[color=red]数据更新保存时注意:[/color]
页面提交数据,后台更新时,如果提交了ID字段,但是没有提交version字段,那么,后台默认为该数据还是一条新数据,所以不做更新操作,做插入操作。
解决方法有2种(根据群里讨论的结果):
1、提交ID字段时,同时提交version字段;
2、只提交ID字段,后台根据ID先get得到一个entity,然后set进其他的值,最后再保存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值