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

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. How does Web Analytics works under sharePoint 2010

    [http://gokanx.wordpress.com/2013/06/15/how-does-web-analytics-works-under-sharepoint-2010/] You nee ...

  2. Level 4 A10: 飞张?

    看来庄家的红桃2个输张没法解决,只能寄希望于飞K了. 但如果将牌2-2分布,还有更稳的打法.在下面这种东家3张黑桃的情况时,庄家只需垫到红桃2就行了. 如果东家有4张黑桃,那就只有飞红桃K这一条路了.

  3. HBase读写路径的工作机制

    出处:http://wuyudong.com/1946.html HBase 写路径工作机制 在HBase 中无论是增加新行还是修改已有的行,其内部流程都是相同的.HBase 接到命令后存下变化信息, ...

  4. C标准库<signal.h>实现

    本文地址:http://www.cnblogs.com/archimedes/p/c-library-signal.html,转载请注明源地址. 背景知识 signal.h是C标准函数库中的信号处理部 ...

  5. 解压缩框架--SSZipArchive

    下载地址:https://github.com/ZipArchive/ZipArchive 如果你直接将框架文件夹拖入项目,构建时会出现以下错误 解决方案: 点击+以后会弹出 如果使用cocoaPod ...

  6. Android线程管理(三)——Thread类的内部原理、休眠及唤醒

    线程通信.ActivityThread及Thread类是理解Android线程管理的关键. 线程,作为CPU调度资源的基本单位,在Android等针对嵌入式设备的操作系统中,有着非常重要和基础的作用. ...

  7. HTML列表元素

    HTML定义了3类列表: 1.有序列表(通常用数字编号) 2.无序列表(通常前面加原点) 3.自定义列表(列表项目,带有集成的定义) 有序列表和无序列表均为列表中的每一项使用列表项元素(<li& ...

  8. iOS开发之网络数据解析--GDataXML解析框架的使用

      前言:GDataXML是google基于C语言libxml2写的第三方框架,该源码文件就一个类,看其源码,基本使用了C语言的底层的很多lib编译库代码,所以刚导入使用,会报错提示需要设置导入需要的 ...

  9. genymotion虚拟机启动失败

    错误提示如下: Make sure that you have installed it correctly before starting Genymotion. 解决方法(重启VirtualBox ...

  10. Effective Java 10 Always override toString() method

    Advantage Provide meaningful of an object info to client. Disadvantage Constrain the ability of chan ...