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

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. Oracle执行计划与统计信息的一些总结

    [日期:2011-08-05]来源:Linux社区  作者:wangshengfeng1986211[字体:大 中 小] 2010-07-01 15:03 1.SET AUTOTRACE ON EXP ...

  2. SharePoint 2013 - REST API about Content

    1. 获取所有子站点信息(Sub Site): var subSitesInfo = "{0}/_api/Web/WebInfos?$orderby=Title desc"; // ...

  3. 高性能JS笔记2——数据存取

    数据存取性能而言: 字面量>本地变量>数组元素>对象成员 一.标识符解析的性能 标识符解析是有代价的,一个标识符的位置越深,它的读写速度也就越慢. 局部变量的读写速度是最快的,全局变 ...

  4. Android SDK Manager无法下载的问题

    Android SDK Manager 你无法更新了. 现在这里有一个解决方案,如下. 1.启动 Android SDK Manager ,打开主界面,依次选择「Tools」.「Options...」 ...

  5. GitHub 基本常用知识解答2

    1.如何拥有一个Git仓库的两种途径 (1)在已有的目录中,初始化一个新的. (2) 比如一个新的项目,或者一个已存在的项目,但该项目尚未有版本控制.如果你想要复制一份别人的项目, 或者与别人合作某个 ...

  6. HBase权威指南环境配置

    出处:http://wuyudong.com/1958.html 系统采用ubuntu-14.04,64bit 1.安装git sudo apt-get install git 出现下面错误:Err ...

  7. IOS 网络浅析-(八 NSURLSession简介)

    就在不长也不短的时间前,苹果正式命令咱们要向NSURLSession看,因此我们不得不认认真真的听从老大的教导,努力认知NSURLSession.其实呢,三方早已为我们解决了问题,但是呢,我们还是有必 ...

  8. IOS 网络浅析-(五 xml解析)

    XML 可扩展标记语言 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言 易读性高,编码手写难度小,数据量大 NSXMLPars ...

  9. 深入理解Android的startservice和bindservice

    一.首先,让我们确认下什么是service?         service就是android系统中的服务,它有这么几个特点:它无法与用户直接进行交互.它必须由用户或者其他程序显式的启动.它的优先级比 ...

  10. android 音乐播放器简单实现

    package com.zhangbz.musicplayer; import java.io.File; import android.app.Activity; import android.me ...