hibernate实现乐观锁的方法
1、使用version或者timestamp(推荐version,因为timestamp只能精确到秒,且必须保证数据库服务器的时间和应用程序的时间一致)。
2、如果APP是基于已有的数据库,而数据库表中不包含代表版本或时间戳的字段,hibernate提供了其他实现乐观锁的方法,把<class>元素的optimistic-lock属性设为"all":
update student set count=1001 where id=1 and count=1001;
第二种方法比较慢,而且只适用于在一个Session中加载了对象,然后又在同一个Session中修改了这个持久化对象的场合。WHY?因为如果不在同一个SESSION中的话,如何得知在数据库中的属性呢?