hibernate事务与并发

hibernate事务与并发

ID:39965944

大小:675.31 KB

页数:24页

时间:2019-07-16

hibernate事务与并发_第1页
hibernate事务与并发_第2页
hibernate事务与并发_第3页
hibernate事务与并发_第4页
hibernate事务与并发_第5页
资源描述:

《hibernate事务与并发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、HibernateORM最佳实践第4章Hibernate事务与并发回顾了解Hibernate持久对象的生命周期管理理解Session的缓存机制掌握Hibernate中操作对象的几种方法以及最佳实现掌握Hibernate的查询方式及实现2目标了解Hibernate事务理解数据库并发操作事务隔离级别掌握Hibernate的并发控制3事务概念所谓事务,就是为了完成一个工作单元执行的一系列操作,这些操作是相互依赖的,要么全部执行成功,要么全部失败事物初始状态A:从帐户A取100元B:给帐户B加100元某个操作失败,事务回滚到初始状态(事务开始)事物初始状态

2、(事务成功)事务具备4个特性:ACID4Hibernate事务Hibenate本身没有事务管理能力,而是依赖于底层的JDBCAPI和JTAAPI,并将其进行封装.通过调用session.beginTransaction()返回一个Transaction对象,开始一个事务.该对象提供commit()和rollback()来提交和回滚事务.5Hibernate事务类型<>Transactionbegin()commit()Rollback()CMTTransactionbegin()commit()Rollback()begin(

3、)commit()Rollback()begin()commit()Rollback()JTATransactionJDBCTransactionCMTTransactionFactoryJTATransactionFactoryJDBCTransactionFactory<>TransactionFactorycreateTransaction():TransactioncreateTransaction():TransactioncreateTransaction():TransactioncreateTransactio

4、n():Transaction在Hibernate可以配置三种类型事务运行在不同的环境中,如图:不同类实现Transaction接口在hibernate配置文件,利用属性hibernate.transaction.factory_class来明确一个事务工厂产生某一类事务的实例.Hibernate默认事务类型*6同步Session和数据库刷新模式可以使用Session.setFlushMode(FlushMode)设置FlushMode.MANUAL手动刷新模式FlushMode.COMMIT在事务提交前刷新SessionFlushMode.AUT

5、O(默认)自动更新FlushMode.ALWAYS每执行一次操作刷新一次7事务并发问题更新丢失(一个事务的回滚影响到另一事务的更新结果)脏读(事务在执行过程中访问到了其它事务未提交的数据)不可重复读(事务在执行过程中再次读取同一数据时,发现其他事务对此数据进行了更新)原因是因为另一个事务执行的update操作幻想读(事务在执行过程中再次执行同一查询时,发现其它事务的更新)原因是另一个事务执行的insert和delete操作8示例-1T2T1T3T4T5T6T7T8取款事务存款事务事务开始查询余额100事务开始查询余额100-10(90)+20(12

6、0)提交事务事务回滚(100)导致更新丢失T2T1T3T4T5T6T7T8事务开始查询余额100事务开始-10(90)查询余额90+20(110)提交事务事务回滚(100)DirtyRead未提交数据9示例-2T2T1T3T4T5T6T7T8存款事务1存款事务2事务开始查询余额100事务开始查询余额100+20(120)+20(120)提交事务提交事务两个事务都不知道对方存在需要加锁机制T2T1T3T4T5T6T7T8注册事务统计事务事务开始事务开始查询人数50+1提交事务查询人数51事务执行过程中发生数据改变10事务隔离级别读未提交级别-1读已提

7、交级别-2可重复读级别-4串行化事务-8在配置文件中,设置属性hibernate.connection.isolation的隔离级别,全局选项,影响所有的数据库连接和事务.一般情况下,可以先为整个应用程序设置合理的隔离级别,再在必要的地方使用锁结合管理;数据库锁的级别越高,并发性越低,一般设置读已提交级别.不能解决脏数据、不可重复读、幻象读不能解决不可重复读、幻象读不能解决幻象读解决上述问题11Hibernate并发控制在应用程序中采用悲观锁和乐观锁解决①悲观锁应用程序为数据资源显示加锁(一般使用数据库提供功能)当数据资源被锁定时,其他并发的事务就

8、不能再同时访问此数据资源,直致当前事务使用数据资源释放锁,其它事务才能继续访问(性能影响较大)②乐观锁假定在存取数据时,不

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。