事务
--一组操作的执行单元,对于数据库而言,事务管理的是一组sql指令,如增加,删除,修改等
事务的一致性:这个事务内的所有操作必须执行成功,如果半路出现错误,那么这一组全部操作都将全部回滚。
隔离级别
脏读:一个事务读取了另一个事务修改但未提交的数据,如果这些数据被回滚,则读到的数据是无效的
不可重复读:同一事务中,多次读取同一数据得到的结果有所不同(后续读取可读取到另一事务已提交的更新数据)
幻读:一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了(在后来的查询中,第一个事务就会发现有原来没有的记录)
spring事务管理方式:
编程式事务管理(实现细粒度的事务控制)
通过程序代码控制事务何时开始,何时结束
使用TransactionTemplate事务模板进行操作
声明式事务管理
只需在Spring配置文件中做一些配置,即可将操作纳入到事务管理中,解除和代码的耦合
spring配置文件:
-
<?xml version="1.0" encoding="UTF-8"?>
-
<beans xmlns=""
-
xmlns:xsi=""
-
xmlns:aop=""
-
xmlns:context=""
-
xmlns:tx=""
-
xsi:schemaLocation="
-
/spring-beans.xsd
-
-
/spring-tx.xsd
-
-
/spring-aop.xsd
-
-
/spring-context.xsd">
-
-
<!-- 配置数据源 -->
-
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
-
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
-
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
-
<property name="user" value="root"></property>
-
<property name="password" value="1234"></property>
-
</bean>
-
-
<!-- 配置jdbc模板 -->
-
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
-
<property name="dataSource" ref="dataSource"></property>
-
</bean>
-
-
<!-- 1 dao -->
-
<bean id="accountDao" class="cn.itcast.dao.impl.AccountDaoImpl">
-
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
-
</bean>
-
-
<!-- 事务管理器 -->
-
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
-
<property name="dataSource" ref="dataSource"></property>
-
</bean>
-
-
<!-- 配置事务模板,并注入事务管理器 -->
-
<bean id="txTemplate" class="org.springframework.transcation.support.TransactionTemplate">
-
<property name="transcationManager" ref="txManager"></property>
</bean>
<!-- 2 servcie -->
<bean id="accountService" class="cn.itcast.service.impl.AccountServiceImpl">
<property name="accountDao" ref="accountDao"></property>
<property name="transactionTemplate" ref="txTemplate"></property>
</bean>
<!-- 对事务管理器进行增强 -->
txAdvice" pointcut-ref="accountPointCut"/>
</beans>
声明式注解开发:
@Transactional
-
<!-- @@@ 声明式注解开发 -->
-
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
-
<property name="dataSource" ref="dataSource"></property>
-
</bean>
-
-
<tx:annotation-driven transaction-manager="txManager"/>
阅读(1013) | 评论(0) | 转发(0) |