Hibernate事务处理.ppt
《Hibernate事务处理.ppt》由会员分享,可在线阅读,更多相关《Hibernate事务处理.ppt(24页珍藏版)》请在三一办公上搜索。
1、Hibernate事务处理,开源O/R映射框架,数据库事务介绍事务的定义事务的ACID属性数据库事务声明通过Hibernate声明JDBC事务通过Hibernate声明JTA事务并发控制多个事务并发引起的问题事务隔离级别在应用程序中解决不可重复读问题乐观锁(Optimistic Locking)悲观锁(Pessimistic Locking),Java高端培训,2,数据库事务的定义,事务是指一组相互信赖的操作行为。这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性。数据库事务是对现实生活中事务的模拟,它由一组在业务逻辑上相互信赖的SQL语句组成。示例:银行转帐操作。,Jav
2、a高端培训,3,数据库事务的ACID属性,ACID:原子性(Atomic):指整个数据库事务是不可分割的工作单元。原子性确保在事务中的所有操作要么都发生,要么都不发生。一致性(Consistency):一旦一个事务结束了(不管成功与否),系统所处的状态和它的业务规则是一致的。即数据应当不会被破坏。隔离性(Isolation):指多个事务同时操作同一数据时,每个事务都有各自的完整数据空间。持久性(Durability):一旦事务完成,事务的结果应该持久化。,Java高端培训,4,数据库事务声明,Java高端培训,5,数据库事务声明,数据库系统的客户程序只要向数据库系统声明了一个事务,数据库系统就
3、会自动保证事务的ACID特性。声明事务包含:事务的开始边界:开始事务。事务的正常结束边界:提交事务。事务的异常结束边界:回滚事务。数据库系统支持两种事务模式:自动提交事务(隐式事务):每个SQL语句都是一个独立的事务,当数据库系统执行完一条SQL语句后,会自动提交事务。手工提交事务(显式事务):必须由数据库系统的客户程序显式指定事务开始边界和结束边界。,Java高端培训,6,回顾通过JDBC声明事务,Java高端培训,7,Connection con=null;PreparedStatement pstmt=null;try con=DriverManager.getConnection(db
4、Url,username,password);/设置手工提交事务模式 con.setAutoCommit(false);pstmt=;pstmt.executeUpdate();/提交事务 mit();catch(Exception e)/事务回滚 con.rollback();.finally.,通过Hibernate声明事务,Hibernate本身在设计时并不具备事务处理功能Hibernate只是将底层的JDBCTransaction或者JTATransaction进行了一下封装,在外面套上Transaction和Session的外壳,其实底层都是通过委托底层的JDBC或JTA来实现事务的
5、调度功能。,Java高端培训,8,通过Hibernate声明JDBC事务,如果Hibernat持久层运行在一个非托管环境中,可以在hibernate配置文件中指定使用的是JDBC事务。注:如果不进行配置,Hibernate也会默认使用JDBC事务。,Java高端培训,9,org.hibernate.transaction.JDBCTransactionFactory,hibernate.cfg.xml,Transaction tx=null;try tx=session.beginTransaction();/do some work.mit();catch(RuntimeException
6、e)if(tx!=null)tx.rollback();throw e;/or display error messagefinally session.close();,注意事项,不管事务成功与否,最后都应该调用Session的close()方法来关闭Session。即使事务中只包含只读操作,也应该在事务执行成功后提交事务,并且在事务执行失败时撤销事务。因为在提交或撤销事务时,数据库会释放事务所占用的资源,有利于提高数据库的运行性能。一个Session可以包含多个Transaction实例,也就是说,一个Session可以对应多个事务。如果在执行Session的一个事务时出现了异常,就必须立
7、即关闭这个Session,不能再利用这个Session来执行其他的事务。,Java高端培训,10,通过Hibernate声明JTA事务,Hibernat持久层运行在一个托管环境中,可以使用JTA,Java高端培训,11,org.hibernate.transaction.JTATransactionFactory,/BMT(bean管理事务)UserTransaction tx=null;try tx=(UserTransaction)new InitialContext().lookup(java:comp/UserTransaction);tx.begin();/Do some work
8、on Session bound to transaction factory.getCurrentSession().persist(.);mit();catch(RuntimeException e)tx.rollback();throw e;/or display error message,hibernate.cfg.xml,注:在CMT(容器管理事务)方式下,事务声明是在session bean的部署描述符中,而不需要编程。,并发控制多个事务并发引起的问题事务隔离级别在应用程序中解决不可重复读问题乐观锁(Optimistic Locking)悲观锁(Pessimistic Locki
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hibernate 事务处理

链接地址:https://www.31ppt.com/p-6507035.html