事务具有ACID:原子性\一致性\隔离性\持续性.我们目前用的最多的事务控制是数据库提供的及ORM框架提供的.对于跨数据库的事务操作,建议用JTA,由容器来提供,如:JBOSS或weblogic.
事务中悲观锁是由数据库来控制的,在增删改的操作中,一旦有人读取了数据,用的是悲观锁,那么他读取的数据由数据库锁定了,别人就不能修改,只有当此人释放了此锁,别人才可以修改其数据.这样就使增删改操作的效率特别低下.
事务中的乐观锁,被悲观锁在效率上就好很多了,也不怕有人锁定数据而不修改的极端情况出现.在Hibernate中乐观锁用verson和teimstamp来实现.具体用verson的悲观锁的过程如下:
先在类中定义:privater int ver ; 并且增加ver的setter与getter方法,然后在类名.hbm.xml的配置文件中增加:<version name="ver" />.这样以后,就会在数据库中增加类对于的表中增加一个ver的自增长int型字段,由此字段来判定你所提交的数据是否能成功.工作的原理是:但很多人读取了一个表里的数据,只有最先提交的人才可以成功修改数据,而且版本号会自动+1.但后面的人提交时,发现版本号已经变了,加了1,由此来判定提交数据失败.