Spring中的事物管理----HelloWorld

在学习Spring的事物管理之前明白先明白几个概念
1什么是事物:事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用
     例子说明:例如银行转账,A账户转账(转200)到B账户,涉及的动作就是A账户余额减少200,B账户余额增加200,把这两个动作当成一个工作单元,要么两个动作一起完成,要么两个动作都不起用

2事物作用是什么:有四大特性,分别是:原子性(就是多个动作组成一个原子操作,要么一起完成,要么一起不起作用)
                        一致性(就是事物完成后,数据和资源保持一致性)
                    隔离性(可能有许多事务会同时处理相同的数据, 因此每个事物都应该与其他事务隔离开来, 防止数据损坏)
                    持久性(一旦事务完成, 无论发生什么系统错误, 它的结果都不应该受到影响. 通常情况下, 事务的结果被写到持久化存储器中)

Spring中的事物管理使用步骤:

* 使用事务来处理的步骤:
* 1先配置事务管理器(每个数据源Spring都有对应的事务管理器)(因为数据源管理器是管理数据源的,所以要添加数据源属性)

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

* 2启用事务注解

<!-- 启用事务注解 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

* 3在需要管理的方法前面使用@Transactional,这样就会把方法放入事务管理器,进行管理

@Transactional
    @Override
    public void purchase(String username, String isbn) {

        //1. 获取书的单价
        int price = bookShopDao.findBookPriceByIsbn(isbn);

        //2. 更新数的库存
        bookShopDao.updateBookStock(isbn);

        //3. 更新用户余额
        bookShopDao.updateUserAccount(username, price);
    }

* 4为什么在测试类中不能使用呢????

时间: 2024-10-02 04:22:23

Spring中的事物管理----HelloWorld的相关文章

Spring中的事物管理,用 @Transactional 注解声明式地管理事务

事物: 事务管理是企业级应用程序开发中必不可少的技术,  用来确保数据的 完整性和 一致性. 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 事务的四个关键属性: 原子性:事务是一个原子操作, 由一系列动作组成. 事务的原子性确保动作要么全部完成要么完全不起作用. 一致性:一旦所有事务动作完成, 事务就被提交. 数据和资源就处于一种满足业务规则的一致性状态中. 隔离性:可能有许多事务会同时处理相同的数据, 因此每个事物都应该与其他事务隔离开来,

Spring中的事物管理,基于spring的bean的配置

很多东西与上边的相同,这儿只简介: 导包... 数据库中建立三个表... 建立存放连接数据库的file文件:jdbc.properties: ----------------------------------------------------------------- com.atguigu.spring.tx.xml包下建立, 接口:BookShopDao 类:BookShopDaoImpl 继承于接口,BookShopDao 异常处理类:BookStockException 测试类:JU

Spring中的事物管理

1.前瞻: 事务管理对于企业应用而言至关重要.它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性.就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到操作过程中机器突然出故障的情况,此时,事务就必须确保出故障前对账户的操作不生效,就像用户刚才完全没有使用过取款机一样,以保证用户和银行的利益都不受损失.在 Spring 中,事务是通过 TransactionDefinition 接口来定义的.该接口包含与事务属性有关的方法. 2.事务隔离级别隔离级别

Spring AOP报错处理 Can not set field to $Proxy 在spring中使用事物或AOP遇到的错误

[转] 解决方法: http://forum.springsource.org/showthread.php?85016-IllegalArgumentException-with-ApplicationContextAware-Proxy 在配置文件中加入proxy-target-class="true" <tx:annotation-driven transaction-manager="transactionManager" proxy-target-c

spring中的事物

spring中的事物 [1]事物的概念 事务的概念:事务指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败. [2]事务的特性 原子性(Atomicity):当事务结束,它对所有资源状态的改变都被视为一个操作,这些操作要不同时成功,要不同时失败:一致性(Consistency):操作完成后,所有数据必须符合业务规则,否则事务必须中止:隔离性(Isolation):事务以相互隔离的方式执行,事务以外的实体无法知道事务过程中的中间状态:持久性(Durable):事务提交后,数据必须以一种持久

Spring中的事务管理

一.Spring事务管理用到的三个接口 a. PlatformTransactionManager 事务管理器 b. TransactionDefinition 事务定义信息(隔离.传播.超时.只读) c. TransactionStatus 事务具体的运行状态 二.Spring为不同的持久化框架提供了不同的PlatformTransactionManager接口实现 事务 说明 org.springframework.jdbc.datasource.DataSourceTransactionM

Spring内置事物管理器

DataSourceTransactionManager:位于org.springframework.jdbc.datasource包中,提供对单个javax.sql.DataSource事务管理,用于Spring JDBC抽象框架.iBATIS或MyBatis框架的事务管理. 仅以此配置为例,其他管理器配置类似 <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTrans

Spring整合hibernate+事物管理

* Spring hibernate 事务的流程 * 1. 在方法开始之前 * ①. 获取 Session * ②. 把 Session 和当前线程绑定, 这样就可以在 Dao 中使用 SessionFactory 的 * getCurrentSession() 方法来获取 Session 了 * ③. 开启事务 * * 2. 若方法正常结束, 即没有出现异常, 则 * ①. 提交事务 * ②. 使和当前线程绑定的 Session 解除绑定 * ③. 关闭 Session * * 3. 若方法出

spring 中的事物处理机制配置问题

Spring的事务处理机制,给我们编程带来了极大的方便,One-Transaction-Per-Request的实现模式,是本人最为欣赏的! 在之前开始接触Spring的时候,为了实现事务处理的模式,我们在声明事务的时候,一般是这么做 首先声明一个事务模板, <bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.Tra