spring-03

33 篇文章 0 订阅
3 篇文章 0 订阅
  1. 使用Spring的JDBC来实现DAO的功能:

    准备工作:
      1):准备依赖的jar.
       mysql-connector-java-5.1.11.jar:MySQL驱动包
       druid*.jar   :连接池包
       spring-jdbc-4.1.2.RELEASE.jar:支持JDBC
       spring-tx-4.1.2.RELEASE.jar: 支持事务
      2):建立t_employee表和Employee对象.
      3):编写DAO组件(接口/实现类/测试类)

  2. JdbcTemplate需要注入DataSource属性,JdbcDaoSupport需要注入吗?内部类处理结果集

  3. 分析转账过程流程:
    ① 首先,获取DataSource对象;
    ② 其次,获取DataSource中的Connection对象;
    ③ 接着,设置取消事务的自动提交方式: connection.setAutoCommit(false);
    ④ 然后,把connection绑定到当前线程中;
    ⑤ 在dao方法中,从当前线程中获取Connection对象
    ⑥ 如果正常执行,则提交事务:提交事务:connection.commit();
              如果出现异常,则回滚事务:回滚事务:connection.rollback();就是释放资源(表所行级)

  4. Spring的事务管理主要包括3个接口:
    TransactionDefinition:封装事务的隔离级别,超时时间,是否为只读事务和事务的隔离级别和传播规则等事务属性,可通过XML配置具体信息。
    PlatformTransactionManager:根据TransactionDefinition提供的事务属性配置信息,创建事务。
    TransactionStatus:封装了事务的具体运行状态。比如,是否是新开启事务,是否已经提交事务,设置当前事务为rollback-only等。

    --------------------------------------------------------------------------------
    Spring支持编程式事务管理和声明式事务管理。
    编程式事务管理:事务和业务代码耦合度太高。
    声明式事务管理:侵入性小,把事务从业务代码中抽离出来,提供维护性。

  5. Spring的事务管理:
    1,PlatformTransactionManager:接口统一抽象处理事务操作相关的方法;spring自己在做,不需自己写
        1):TransactionStatus getTransaction(TransactionDefinition definition):
            根据事务定义信息从事务环境中返回一个已存在的事务,或者创建一个新的事务,并用TransactionStatus描述该事务的状态。
        2):void commit(TransactionStatus status):
            根据事务的状态提交事务,如果事务状态已经标识为rollback-only,该方法执行回滚事务的操作。
        3):void rollback(TransactionStatus status):
            将事务回滚,当commit方法抛出异常时,rollback会被隐式调用
    2,在使用spring管理事务的时候,首先得告诉spring使用哪一个事务管理器;
    3,常用的事务管理器:
       DataSourceTransactionManager:使用JDBC,MyBatis的事务管理器;
       HibernateTransactionManager:使用Hibernate的事务管理器;

  6. 事务方法属性:
    1,name:匹配到的方法模式;name=“trans”什么意思?
    2,read-only:如果为true,开启一个只读事务,只读事务的性能较高,但是不能再只读事务中,使用DML;默认可读性
    3,isolation:代表数据库事务隔离级别(就使用默认)
        DEFAULT:让spring使用数据库默认的事务隔离级别;
        其他:spring模拟;
    4,no-rollback-for: 如果遇到的异常是匹配的异常类型,就不回滚事务;
    5,rollback-for:如果遇到的异常是指定匹配的异常类型,才回滚事务;
        spring默认情况下,spring只会去回滚RuntimeException及其子类,不会回滚Exception和Thowable.
    6,propagation:事务的传播方式(当一个方法已经在一个开启的事务当中了,应该怎么处理自身的事务)
      1,REQUIRED(默认的传播属性):如果当前方法运行在一个没有事务环境的情况下,则开启一个新的事务,如果当前方法运行在一个已经开启了的事务里面,把自己加入到开启的那个事务中
      2,REQUIRES_NEW:不管当前方法是否运行在一个事务空间之内,都要开启自己的事务

  7. 声明式事务管理:开启事务注解<tx:annotation-driven transaction-manager=”txManager”/>
    在类或相应方法上贴@Transactional(readOnly='',propagation isolation )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值