一共有两种事务管理机制:编程式事务管理和声明式事务管理。

1.编程式事务管理企业已经不用了。

2.我们主要讲的是声明式事务管理。声明式事务管理 ,无需要修改原来代码,只需要配置,为目标代码添加事务管理 , AOP底层实现 --- 企业推荐

下面写一个案例:通过Spring声明式事务管理。实现转账案例。

第一步:建表;

建表语句如下:account中有两个账户(aaa和bbb)

CREATE TABLE `account` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`money` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `account` VALUES ('1', 'aaa', '1000');
INSERT INTO `account` VALUES ('2', 'bbb', '1000');

创建工程 spring3_day3_transactionmanager

导入IoC核心 4个、 日志2个

测试 1个

AOP 4个

Jdbc 2个

数据库驱动1 个

C3p0 1个

aaarticlea/png;base64,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" alt="" />

引入applicationContext.xml 、 db.properties、 log4j.properties

第二步:写实体类:

//对应数据库中的account表
public class Account {
private int id;
private String name;
private double money;
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the money
*/
public double getMoney() {
return money;
}
/**
* @param money the money to set
*/
public void setMoney(double money) {
this.money = money;
} }

第三步:写 AccountDao接口:

public interface AccountDao {

//加钱
public void addmoney(String name,double money);
//减钱
public void reducemoney(String name ,double money);
}

第四步:写AccountDao接口的实现类

//继承了JdbcDaoSupport,这样就可以Spring的JDBc的模板
public class AccountDaoimpl extends JdbcDaoSupport implements AccountDao {
public void addmoney(String name, double money) {
String sql="update account set money=money+"+money+"where name=?";
this.getJdbcTemplate().update(sql, name);
} public void reducemoney(String name, double money) {
String sql="update account set money=money-"+money+"where name=?";
this.getJdbcTemplate().update(sql, name); } }

第五步:写转账的接口

/*
* 转账的接口
*/
public interface AccountService {
//转钱
public void transfer(String outAccount,String inAccount,double money); }

第六步:转账接口的实现类

里面的accountDao用@AutoWired注解的方式。

public class AccountServiceimpl implements AccountService {

  /**
* 这个类是转账接口的实现类。我们要考虑的问题是怎么把Dao给注入进去。
* 这里用注解的方式 @Autowired。
* 一旦用这种方式,之前那种set/get方式在applicationContext.xml中的
* <bean id="AccountService" class="cn.itcast.service.AccountServiceimpl">
<!-- <property name="accountDao" ref="AccountDao"/> -->
</bean>
里面的property name="accountDao" ref="AccountDao"/>必须去掉。
*
*
*/
@Autowired
private AccountDao accountDao; public void transfer(String outAccount, String inAccount, double money) { accountDao.addmoney(inAccount, money);
accountDao.reducemoney(outAccount, money); } }

第七步:写applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!-- <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> -->
<!-- 引入peoperties文件 -->
<!-- <context:property-placeholder location="classpath:db.properties"/> -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:db.properties"/>
</bean> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driver}"/>
<property name="jdbcUrl" value="${url}"></property>
<property name="user" value="${username}"></property>
<property name="password" value="${password}"></property>
</bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean> <bean id="AccountDao" class="cn.itcast.dao.AccountDaoimpl">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
<bean id="AccountService" class="cn.itcast.service.AccountServiceimpl"> </bean>
</beans>

第八步:写Junit测试类

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class TestAccount {
@Autowired
private AccountService accountService; @Test
public void accounttest()
{ accountService.transfer("aaa", "bbb", 200);
}
}

结果:转账一切正常。但是我们自己在转账函数里面加一个异常:

 *转账接口的实现类
*/
public class AccountServiceimpl implements AccountService { /**
* 这个类是转账接口的实现类。我们要考虑的问题是怎么把Dao给注入进去。
* 这里用注解的方式 @Autowired。
* 一旦用这种方式,之前那种set/get方式在applicationContext.xml中的
* <bean id="AccountService" class="cn.itcast.service.AccountServiceimpl">
<!-- <property name="accountDao" ref="AccountDao"/> -->
</bean>
里面的property name="accountDao" ref="AccountDao"/>必须去掉。
*
*
*/
@Autowired
private AccountDao accountDao; public void transfer(String outAccount, String inAccount, double money) { accountDao.addmoney(inAccount, money);
int a=1/0;
accountDao.reducemoney(outAccount, money); } }

那么会就加钱成功。减钱不成功,所以这里就要加入事务。

25Spring_事务管理的两种机制的更多相关文章

  1. Spring中事务管理的两种方式

    spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager.对于编程式事务 ...

  2. Spring事务管理的两种方式

    参考文档: http://www.iteye.com/topic/1123347 http://blog.csdn.net/lcj8/article/details/2835432 PS:好像还是tx ...

  3. 事务管理(下) 配置spring事务管理的几种方式(声明式事务)

    配置spring事务管理的几种方式(声明式事务) 概要: Spring对编程式事务的支持与EJB有很大的区别.不像EJB和Java事务API(Java Transaction API, JTA)耦合在 ...

  4. Spring管理事物两种方式

    Spring管理事物两种方式 1. 编程式事物管理(在开发中不经常使用) 使用步骤 1. 配置数据库事物管理 DataSourceTransactionManager <!--配置事物管理器-- ...

  5. phpcms调取数据库的两种机制

    在phpcms中,模板调取后台的数据有两种机制: 1.在控制器中定义数据,在模板中直接调用. 2.标签机制.即在模块的classes/tag.class中定义标签类,然后在模板中用标签调用 两种调用机 ...

  6. Spring事务管理的三种方式

    一 .第一种:全注解声明式事务 Xml代码 复制代码 收藏代码 .<?xml version="1.0" encoding="UTF-8"?> .& ...

  7. Spring事务管理的四种方式(以银行转账为例)

    Spring事务管理的四种方式(以银行转账为例) 一.事务的作用 将若干的数据库操作作为一个整体控制,一起成功或一起失败.   原子性:指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不 ...

  8. java SWing事件调用的两种机制

      Java(91)  /** * java swing中事件调用的两种机制: * (一)响应机制 * (二)回调机制 */ package test; import java.awt.*; impo ...

  9. Kubernetes 健康检查的两种机制:Liveness 探测和 Readiness 探测

    Kubernetes 健康检查的两种机制:Liveness 探测和 Readiness 探测,并实践了健康检查在 Scale Up 和 Rolling Update 场景中的应用.kubelet使用启 ...

随机推荐

  1. oracle10g 统计信息查看、收集

      1. 统计信息查看 1.1 单个表的全局统计信息.统计效果查看 2. 统计信息分析(收集) 2.1 分析工具选择 2.2 分析前做index重建 2.3 分析某数据表,可以在PL/SQL的comm ...

  2. Atitit.atiInputMethod v2词库清理策略工具    q229

    Atitit.atiInputMethod v2词库清理策略工具    q229 1.1. Foreigncode 外码清理1 1.2. 垃圾词澄清1 1.1. Foreigncode 外码清理 On ...

  3. SharePoint 2013 创建web应用程序报错"This page can’t be displayed"

    错误描述 This page can’t be displayed •Make sure the web address http://centeradmin is correct. •Look fo ...

  4. UITabBar,UINavigationBar的布局和隐藏问题

    ---恢复内容开始--- 1. 前言 UITabBar,UINavigationBar非常的好用,但是毕竟是系统自带的,不受自己完全掌握,对于布局和隐藏会有一些问题,现在就来谈谈我的想法和一些问题. ...

  5. Struts2(十二)使用验证框架验证数据较验

    一.数据验证 1.1.为什么要进行数据验证 对数据的合法性进行检查,只允许合法的数据进入应用程序 1.2.在哪里实现数据验证 客户端验证: 数据提交前在客户端验证 可使用JavaScript或者JQu ...

  6. IOS 图片轮播实现原理 (三图)

    IOS 图片轮播实现原理的一种 图片轮播所要实现的是在一个显示区域内通过滑动来展示不同的图片. 当图片较少时我们可以采用在滚动视图上添加很多张图片来实现. 但是如果图片数量较多时,一次性加载过多图片会 ...

  7. unity下载文件二(http同步下载)

    说到下载,其实C#里的网络模块,真的是被各种封装,最终就看你对这个语言中库的熟悉程度了. 抛开C#中IO效率的弊病不说,真的很容易,记住,太过于注重效率或者追求极致,你将会死的很惨,有时候折中才是最好 ...

  8. Swift学习--常量.变量.数据类型的使用(二)

    一.Swift中的数组 //Swift中的数组 //NSArray *arr = @["",""]; //和OC数组的区别就是去掉前面的@ let arr11 ...

  9. iOS开发之网络编程--使用NSURLConnection实现文件上传

    前言:使用NSURLConnection实现文件上传有点繁琐.    本文并没有介绍使用第三方框架上传文件. 正文: 这里先提供用于编码测试的接口:http://120.25.226.186:3281 ...

  10. android network develop(3)----Xml Parser

    Normally, there are three type parser in android. Xmlpullparser, DOM & SAX. Google recomand Xmlp ...