Spring事务管理
1.事务的基本概念:
运行期例外unchecked事务回滚 throw new RunTimeException()
check例外 事务不回滚 Exception
改变事务行为:
加上以上注释Checked例外,也会事务回滚
加上以上注释unChecked例外,不会进行事务回滚
事务的传播行为:
不打开事务:
默认事务传播行为
外部事务回滚,则全部回滚;内部事务回滚,不影响外部的事务
(spring内部完成)
Readonly 只读属性设置,不能更新,提高效率
timeout事务的超时时间,默认30秒
isolation事务隔离级别(由数据库提供,不由spring提供)
sqlServer默认: sqlServer2000(read commited), sqlServer2005(2种: read commited,repeatable Read)
mysql默认:
隔离级别越高,并发影响性能越大(从上到下,1,2,3,4)
可重复读,mysql采用的是快照技术(镜像)
2.采用基于xml方式配置事务
切入点 事务通知
Aop技术拦截一些类及其中的方法
第一个*:返回值的类型表示任意
..表示:包含子包
第二个*:包含所有的类
第三个*:包含所有的方法
(..):方法里面的参数可有可无,及任意类型
事务管理器
3.注解方式配置事务,更加灵活
- <tx:annotation-driven transaction-manager="transactionManager" />
- <!--这句话的作用是注册事务注解处理器 -->
- <bean id="transactionManager"
- class="org.springframework.jdbc.datasource.DataSourceTransactionManager ">
- <property name="dataSource">
- <ref bean="basicDataSource" />
- </property>
- </bean>
- <bean id="basicDataSource" class="org.apache.commons.dbcp.BasicDataSource">
- <property name="url"
- value="jdbc:mysql://127.0.0.1:3306/mytestdb?characterEncoding=utf8" />
- <property name="driverClassName" value="com.mysql.jdbc.Driver" />
- <property name="username" value="root" />
- <property name="password" value="123456" />
- <property name="maxActive" value="100" />
- <property name="maxIdle" value="30" />
- <property name="maxWait" value="1000" />
- <property name="validationQuery" value="select 1" />
- </bean>