欢迎来到天天文库
浏览记录
ID:45033689
大小:604.50 KB
页数:26页
时间:2019-11-08
《05数据库事务与并发处理1》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Transaction&ConcurrentHibernate教学内容数据库事务的概念声明事务边界并发问题设置事务隔离级别使用悲观锁解决并发问题使用乐观锁解决并发问题数据库事务的概念事务是指一组相互依赖的操作行为,如银行交易,股票交易或网上购物。事务的成功取决于这些相互依赖的操作行为是否都能执行成功,只要有一个操作行为失败,就意味着整个事务的失败,例如:Tony到银行办理转帐事务,把100元钱转到jack的帐号上,这个事务包含以下操作行为:1.从tom的帐户上减去100元。2.往jack的帐户上增加100元。以上两个操作必需作为一个不可分割的工作单元
2、,任何一个行为的失败整个转帐都不会成功。数据库事务是对现实生活中事务的模拟,它由一组在业务逻辑上相互依赖的SQL语句组成。数据库事务的生命周期声明事务的边界事务的开始边界事务的正常结束边界(COMMIT):提交事务,永久的保存被事务更新后的数据库状态。事务的异常结束边界(ROLLBACK):撤销事务,使数据库退回到执行事务前的初始状态。通过JDBCAPI来声明事务边界Connection类提供了用于控制事务的方法:setAutoCommit(booleanautoCommit):设置是否自动提交事务commit():提交事务rollback():撤销
3、事务通过HibernateAPI声明事务的边界声明事务的开始边界Transactiontx=session.beginTransaction();提交事务tx.commit();撤销事务tx.roll多个事务并发运行时的并发问题单个事务能保证单项业务的数据完整性,但是当多个事务同步运行时可能带来并发问题,具体体现在:第一类丢失更新:在撤销一个事务时,把其它事务提交的更新数据覆盖。脏读:一个事务读到另一事务未提交的更新数据。虚读:一个事务读到另一事务已提交的新插入的数据。不可重复读:一个事务读到另一事务已提交的更新数据。第二类丢失更新:这是不可重复读中
4、的特例,一个事务覆盖另一事务已提交的更新数据。第一类丢失问题时间 取款事务 转账事务---------------------------------------------------------------------------------------- T1开始事务T2开始事务T3查询账户余额为1000元T4查询账户余额为1000元T5汇入100元把余额改为1100元T6提交事务T7取出100元把余额改为900元T8撤销事务余额恢复为1000元-----------
5、------------------------------------------------------------------------------脏读问题时间 取款事务 转账事务------------------------------------------------------------------------------------------ T1开始事务T2开始事务T3查询账户余额为1000元T4
6、 T5取出100元把余额改为900元T6查询账户余额为900元(脏读) T7撤销事务余额恢复为1000元T8汇入100元把余额改为1000元T9提交事务------------------------------------------------------------------------------------------虚读问题时间 注册事务 统计事务------------------------------------------------------
7、------------------------------------ T1开始事务T2开始事务T3统计注册客户总数为10000人T4注册一个新用户T5提交事务T6统计注册客户总数为10001人T7到底哪一个统计数据有效?-------------------------------------------------------------------------------------------不可重复读时间 取款事务 转账事务----------------------
8、------------------------------------------------------
此文档下载收益归作者所有