EJB遵循的两种最基本的对象并发控制策略是:悲观并发控制和乐观并发控制。
对于乐观并发控制,事物持续期间,EJB组件并不会持有资源锁。当事物试图提交时,如果RDBMS探测到冲突的存在,则会回滚事物。
大部分应用场合,使用乐观并发控制更具有优势。
本文则谈谈如何实现EJB 3.0乐观并发控制。
EJB提供乐观锁控制。 可以通过在Entity中加入@Version private int version来实现。
主要实现方式是在Entity中加入如下定义:
@Version
@Column(name="OPTLOCK")
private int versionNum;
可以通过判断versionNum的值,来判断修改数据前所读的数据与当前数据库中的数据的一致性。
注意:这里的versionNum的值是不能进行修改的,而是由持久层自己去更新,更新一次,数据便加1。