《hibernate事务处理和锁1》由会员分享,可在线阅读,更多相关《hibernate事务处理和锁1(2页珍藏版)》请在金锄头文库上搜索。
1、hibernate事务处理和锁事务处理:Hibernate本身并不具备事务管理能力。在事务管理层,Hibernate将其委托给底层 的JDBC或者JTA,以实现事务的管理与调度。基于JDBC的事务:无疑是最简单的实现方式,session = sessionFactory.openSession();Transaction tx = session.beginTransaction();mit();基于JTA的事务管理:hibernate默认采用JDBC Transacion。可以通过配置文件指定采用JTA作为事务管 理实现。org.hibernate.transaction.JTATransa
2、ctionFactory锁(locking)支持两种锁:悲观锁和乐观锁悲观锁(Pessimistic locking):数据库的实现select * from account where name=yyy for update通过for update子句,这条语句锁定所有符合条件的记录,在本次事务提交之前,外 界无法修改这些记录。hibernate的实现,也是基于数据库的锁机制实现:加锁一般通过以下方法实现:Criteria.setLockModeQuery.setLockModeSession.lockhibernate的加锁模式:LockMode.NONE:无锁机制LockMode.WRI
3、TE:hibernate 在 Insert 和 update 时,会自动获取LockMode.READ:hibernate在读取记录的时候,会自动获取以上3种,由hibernate内部使用。LockMode.UPGRADE:利用数据库的for update子句加锁LockMode.UPGRADE_NOWAIT: oracle 特定实现,利用 oracle 的 for update nowait子句实现加锁。乐观锁(Optimistic locking):hibernate在其数据访问引擎中内置了乐观锁实现。可以通过class描述符的optimistic-lock属性结合version描述符指定。注意,version节点要在ID节点之后。数据库中version必须有初始值,否则会报错。这里,声明了一个version属性,用于存放用户的版本信息,保存在T_User表的 version字段中。