欢迎来到天天文库
浏览记录
ID:44607399
大小:350.97 KB
页数:24页
时间:2019-10-24
《实验八事务管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验八事务管理一、JavaEE事务对JavaEE应用程序而言,由于各数据库厂商都提供了符合JDBC接口标准的驱动程序,所以在JavaEE应用中操作数据库事务就是对JDBC事务的操作。存在两种事务:JDBC的事务、JTA(JavaTransactionArchitecture)事务1.JDBC的事务在获得Connection对象后,默认的事务为自动提交,不需要手动提交。JDBC事务是一个局部事务,只能应用于当前数据库。在分布式环境中,如果事务跨越多个数据库,则只能使用支持分布式应用的JTA标准。2・JTA(Java
2、TransactionArchitecture)事务JTA事务,指的是Java事务API,也是JavaEE标准的一部分。JTA使用事务管理器(TransactionManager)来管理分布式事务,一个JTA事务涉及一个事务管理器和多个资源管理器。通常使用JTA事务比较难一些,所以一个应用如果只使用一个数据库,贝I」仅使用JDBC事务就足够了,尽管可以使用JTA事务,但是这样会带来不必要的复杂性。对Spring应用程序来讲,究竟使用JDBC事务还是使用JTA事务已经不重要了,因为Spring框架使用同一种抽象的事
3、务编程模型。配合芮明式(不是编程式)事务管理,选择JDEC事务还是JTA事务仅是修改配置文件的问题,不需要修改代码!二、使用Spring进行事务管理依赖Spring的MC容器,Spring提供了轻量级的事务管理功能,与普通的数据库事务管理不同,不是针对操作进行事务管理,Spring是针对Jevm类中的方法进行事务管理。使程序员不必进行具体的事务管理。1.事务的概念数拯库中的事务是一个完整的操作序列,这一操作序列中的操作要么全做,要么全不做。原子性一致性隔离性持久性1.在并发操作中可能出现的操作现象(1)(第一类)
4、丢失更新(一事务的撤销将另一事务的更新覆两次更新问题J第二类丢失更新}(第2次更新将笫].次更新覆盖);(3)滋渎(一事务读取了另一事务更新过但还没提交的数据-脏数据);(4)不可重复读取(Non-repeatableReads一个事务对同一个数据读取了两次,但是读取的结果不同);(5)虛渎(一事务进行了两次(不一定相同的SQL)查询,第二次包含了第一次查询中未岀现的数据-两次之间其它事务插入了数据)1.数据库的隔离级别为避免出现上述情况,在标准的SQL规范中,定义了四种事务隔离级别,不同的隔离级别对事务的处理不
5、同。(1)未授权读取(ReadUnconunited):允许脏读,但是不允许(第一类)丢失更新;(2)授权读取(Readcommited):允许不可重读现象,但是不允许读脏数据;(3)可重复读取(RepeatableRead):禁止不可重复读取现象和读脏数据现象;(4)序列化(Serializable):提供严格的事务隔离。事务只能串行,不能并发执行。2.事务的传播性通常一个事务的所有代码都在一个事务中执行。但是如果一个事务上下文已经存在,可以指定事务性方法的执行行为。如简单地在现有的事务中执行、挂起现有事务、或
6、者创建一个新的事务。事务的传播性及其意义MANDATORY直接使用当前的事务执行,如果当前没有事务则抛出异常;NESTED在创建的新事务中执行。如果当前存在事务,贝IJ会形成事务的嵌套;NEVER在没有事务的情况下执行。如果当前存在事务则抛出异常;NOT_SUPPORTED在没有事务的情况下执行。如果当前存在事务,则将当前事务挂起;REQUIRED在事务中执行。如果当前没有事务存在,则创建一个新的事务。REQUIRED_NEW在新的事务中执行。如果当前存在事务,则将当前事务挂起。SUPPORTS使用当前的环境执行
7、。如果当前存在事务,则使用这个事务;如果当前不存在事务,则不使用事务。5.Spring的事务模型Spring框架提供了极其强大而简便的事务处理功能,其核心是PlatformTransaetionManager®UoSpring彳各所有的事务管理功能都抽象为PlatformTransactionManeger、TransactionStatus^PlTransBctionDefinition3个接口,无论使用JDBC事务、JTA事务,还是ORM框架自定义的事务。(1)PlAtformTrBnsBctionMmriB
8、gerd定义事务管理器,所有与事务相关的操作都由PlatformTransactionManagerTK^fi;(2)TransactionStmtus定义事务状态,PlatformTransactionManager^^i^Transectionstatus的状态来决定是否回滚事务。(3)TransactionDefinition则定义了事务的隔离级别和传播行为。在事务
此文档下载收益归作者所有