为了账号安全,请及时绑定邮箱和手机立即绑定
  • Spring为不同的持久层框架提供不同的PlatformTransactionManager接口的实现
    查看全部
  • Spring事务管理高层抽象接口
    查看全部
    0 采集 收起 来源:接口介绍

    2016-03-20

  • 事务方法中存在异常 即: public void tansfer(final String out,final String in,final Double money){ tran.execute(new TransactionCallbackWithoutResult( doInTransactionWithoutResult(TransactionStatus arg0){ dao.outMoney(out,money); //会抛出异常 int a=1/0; dao.inMoney(in,money); } )) 当调用transfer方法时遇到异常,那么就会执行事务回滚,控制台也不会报错.也不会像没有设置事务之前,出现aaa帐号少了钱,而bbb帐号却没有增加钱的情况.
    查看全部
  • TransactionTemplate只是简化了DataSourceTransactionManager的底层代码,真正进行事务管理的仍然是数据源管理器 TransactionTemplate类中有一个execute(TransactionCallback arg0)方法,在Service方法里调用此方法来设置事务 参数TransactionCallback是一个接口, 可以创建一个类实现接口或者通过匿名内部类,即execute( new TransactionCallbackWithoutResult(..))的方式,TransactionCallbackWithoutResult类已经实现了TransactionCallback接口 TransactionCallback接口中声明了一个doInTransactionWithoutResult(TransactionStatus arg0)方法 在实现TransactionCallback接口的doInTransactionWithoutResult()方法中进行事务的操作,把Dao中的方法放在此方法中执行,那么在doInTransactionWithoutResult()方法中执行的方法要不全都成功要不全都失败 之所以叫做编程式事务管理,是因为在使用事务的时候,需要手动编写代码 匿名内部类中使用了外部类的参数,因此可以把参数设置为final便可以使用 因此: public class ServiceImpl Implements Service{ private Dao dao; private TransactionTemplate tran; //生成相应set()方法 public void tansfer(final String out,final String in,final Double money){ tran.execute(new TransactionCallbackWithoutResult( doInTransactionWithoutResult(TransactionStatus arg0){ dao.outMoney(out,money); dao.inMoney(in,money); } )) } } 当调用tansfer方法会成功执行
    查看全部
  • 编程式事务管理的配置
    查看全部
  • 编程式的事务控制: (使用TransactionTemplate) Spring为了简化设置事务的代码量,提供了TransactionTemplate事务管理模版类. 在哪个地方需要用到事务,那么就在哪个地方注入这个模版. 真正进行事务管理是由事务管理器来完成. TransactionTemplate事务管理模版依赖于DataSourceTransactionManager数据源事务管理器(PlatformTransactionManager平台事务管理器的实现类).配置文件中引入TransactionTemplate类,把数据源事务管理器对象注入到该bean的transactionManager属性中. DataSourceTransactionManager数据源管理器又依赖于DataSource.因此把数据源对象注入到数据源管理器的dataSource属性中. 一般在Service中设置事务,因此在Service实体类中就要定义一个TransactionTemplate的成员变量,并生成set()方法.因此要把TransactionTemplate的bean注入到Service实体类中的TransactionTemplate类型的属性中.
    查看全部
  • XML配置: 图中引入了JdbcTemplate实体类,并把数据源注入该bean,最后将该bean注入到Dao的jdbcTemplate属性中. 也可以不引入JdbcTemplate实体类,直接将数据源注入到Dao的dataSource属性中,因为只要给继承JdbcDaoSupport的类注入数据源那么它就会自动创建一个JdbcTemplate. <bean id="dao" class=""> <property name="dataSource" ref="DataSource"/> </bean> <bean id="DataSource" class=".."> .. </bean>
    查看全部
  • 银行转账例子: 图中直接定义了Service实体类,类中注入Dao对象.没有定义Service接口再通过实体类实现. Service调用Dao方法,因为1/0会抛异常,没有设置事务,所以会减掉aaa的200块,但不会像bbb帐号增加200块.
    查看全部
  • 银行转账例子: 定义Dao的接口,通过Dao实现类实现接口.定义Service接口,通过Service实体类实现该接口并调用Dao层的方法. Dao的实体类继承JdbcDaoSupport类,通过JdbcTemplate模板类来对数据库进行操作. 图中方法直接使用了Dao实体类,没有定义Dao接口.
    查看全部
  • 1.编程式的事物管理
    查看全部
  • Oracle隔离级别
    查看全部
  • 事物隔离级别
    查看全部
  • Spring事物管理
    查看全部
    0 采集 收起 来源:接口介绍

    2016-03-18

  • 事物的特性
    查看全部
    0 采集 收起 来源:事务回顾

    2016-03-18

  • (方法二) dataSource(spring常用) 使用spring,同时项目中不用jndi,又不想配置到Hibernate中,可以直接将C3P0配置到dataSource中即可: <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value=""/> <property name="jdbcUrl" value=""/> <property name="user" value=""/> <property name="password" value=""/> 连接池中保留的最小连接数 <property name="minPoolSize" value="10"/> 连接池中保留的最大连接数.默认为15 <property name="maxPoolSize" value="100"/> 最大空闲时间,1800秒内未使用则连接被丢弃,若为0则永不丢弃.默认为0 <property name="maxIdleTime" value="1800"/> 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.默认为3 <property name="acquireIncrement" value="3"/> <property name="maxStatements" value="1000"/> <property name="initialPoolSize" value="10"/> 每60秒检查所有连接池中的空闲连接.默认为0 <property name="idleConnectionTestPeriod" nvalue="60"/> 定义在从数据库获取新连接失败后重复尝试的次数.默认为30 <property name="acquireRetryAttempts" value="30" /> <property name="breakAfterAcquireFailure" value="true"/> <property name="testConnectionOnCheckout" value="false"/> </bean>
    查看全部

举报

0/150
提交
取消
课程须知
学习本课程前需要熟悉Spring的基础知识,掌握IOC和AOP的基本概念。小伙伴们可参考《Spring入门》课程
老师告诉你能学到什么?
1、理解Spring事务管理的基本概念 2、掌握Spring事务管理的应用场景 3、掌握声明式事务管理和编程式事务管理的实现方式

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!