Chinaunix首页 | 论坛 | 博客
  • 博客访问: 126327
  • 博文数量: 47
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 243
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-18 11:45
文章分类

全部博文(47)

文章存档

2017年(2)

2015年(33)

2014年(12)

分类: Java

2015-04-07 10:33:33

事务--一组操作的执行单元,对于数据库而言,事务管理的是一组sql指令,如增加,删除,修改等
事务的一致性:这个事务内的所有操作必须执行成功,如果半路出现错误,那么这一组全部操作都将全部回滚。

隔离级别
    脏读:一个事务读取了另一个事务修改但未提交的数据,如果这些数据被回滚,则读到的数据是无效的
   不可重复读:同一事务中,多次读取同一数据得到的结果有所不同(后续读取可读取到另一事务已提交的更新数据)
    幻读:一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了(在后来的查询中,第一个事务就会发现有原来没有的记录)

spring事务管理方式:
    编程式事务管理(实现细粒度的事务控制)
        通过程序代码控制事务何时开始,何时结束
        使用TransactionTemplate事务模板进行操作
    声明式事务管理
        只需在Spring配置文件中做一些配置,即可将操作纳入到事务管理中,解除和代码的耦合

spring配置文件:
    

点击(此处)折叠或打开

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns=""
  3.        xmlns:xsi=""
  4.        xmlns:aop=""
  5.        xmlns:context=""
  6.        xmlns:tx=""
  7.        xsi:schemaLocation="
  8.                             /spring-beans.xsd
  9.                            
  10.                             /spring-tx.xsd
  11.                            
  12.                             /spring-aop.xsd
  13.                            
  14.                             /spring-context.xsd">
  15.     
  16.     <!-- 配置数据源 -->
  17.     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  18.         <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
  19.         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
  20.         <property name="user" value="root"></property>
  21.         <property name="password" value="1234"></property>
  22.     </bean>
  23.     
  24.     <!-- 配置jdbc模板 -->
  25.     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  26.         <property name="dataSource" ref="dataSource"></property>
  27.     </bean>
  28.     
  29.     <!-- 1 dao -->
  30.     <bean id="accountDao" class="cn.itcast.dao.impl.AccountDaoImpl">
  31.         <property name="jdbcTemplate" ref="jdbcTemplate"></property>
  32.     </bean>

  33.     <!-- 事务管理器 -->
  34.     <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  35.         <property name="dataSource" ref="dataSource"></property>
  36.     </bean>

  37.     <!-- 配置事务模板,并注入事务管理器 -->
  38.     <bean id="txTemplate" class="org.springframework.transcation.support.TransactionTemplate">
  39.         <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
    

点击(此处)折叠或打开

  1. <!-- @@@ 声明式注解开发 -->
  2.     <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  3.         <property name="dataSource" ref="dataSource"></property>
  4.     </bean>
  5.     
  6.     <tx:annotation-driven transaction-manager="txManager"/>
阅读(974) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~