Spring对事务管理的支持的发展历程(基础篇)
- Connection conn =
- DataSourceUtils.getConnection();
- //开启事务
- conn.setAutoCommit(false);
- try {
- Object retVal =
- callback.doInConnection(conn);
- conn.commit(); //提交事务
- return retVal;
- }catch (Exception e) {
- conn.rollback();//回滚事务
- throw e;
- }finally {
- conn.close();
- }
- Session session = null;
- Transaction transaction = null;
- try {
- session = factory.openSession();
- //开启事务
- transaction = session.beginTransaction();
- transation.begin();
- session.save(user);
- transaction.commit();//提交事务
- } catch (Exception e) {
- e.printStackTrace();
- transaction.rollback();//回滚事务
- return false;
- }finally{
- session.close();
- }
缺点:不一致的事务管理,复杂
- public interface PlatformTransactionManager {
- TransactionStatus getTransaction(TransactionDefinition definition)
- throws TransactionException;
- void commit(TransactionStatus status) throws TransactionException;
- void rollback(TransactionStatus status) throws TransactionException;
- }
- //1.获取事务管理器
- PlatformTransactionManager txManager = (PlatformTransactionManager)
- ctx.getBean("txManager");
- //2.定义事务属性
- DefaultTransactionDefinition td = new DefaultTransactionDefinition();
- td.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
- //3开启事务,得到事务状态
- TransactionStatus status = txManager.getTransaction(td);
- try {
- //4.执行数据库操作
- System.out.println(jdbcTempate.queryForInt("select count(*) from tbl_doc"));
- //5、提交事务
- txManager.commit(status);
- }catch (Exception e) {
- //6、回滚事务
- txManager.rollback(status);
- }
- //1.获取事务管理器
- PlatformTransactionManager txManager = (PlatformTransactionManager)
- ctx.getBean("txManager");
- //2、定义事务管理的模板
- TransactionTemplate transactionTemplate = new TransactionTemplate(txManager);
- //3.定义事务属性
- transactionTemplate.
- setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
- //4.回调,执行真正的数据库操作,如果需要返回值需要在回调里返回
- transactionTemplate.execute(new TransactionCallback() {
- @Override
- public Object doInTransaction(TransactionStatus status) {
- //5.执行数据库操作
- System.out.println(jdbcTempate.queryForInt("select count(*) from tbl_doc"));
- return null;
- }
- });





Spring对事务管理的支持的发展历程(基础篇)的更多相关文章
- Spring对事务管理的支持的发展历程--转
原文地址:http://www.iteye.com/topic/1123049 1.问题 Connection conn = DataSourceUtils.getConnection(); //开启 ...
- Spring 对事务管理的支持
1.Spring对事务管理的支持 Spring为事务管理提供了一致的编程模板,在高层次建立了统一的事务抽象.也就是说,不管选择Spring JDBC.Hibernate .JPA 还是iBatis,S ...
- 【Spring】Spring的事务管理 - 1、Spring事务管理概述(数据库事务、Spring事务管理的核心接口)
Spring事务管理概述 文章目录 Spring事务管理概述 数据库事务 什么是Spring的事务管理? Spring对事务管理的支持 Spring事务管理的核心接口 Platform Transac ...
- 深入Spring:自定义事务管理
转自: http://www.jianshu.com/p/5347a462b3a5 前言 上一篇文章讲了Spring的Aop,这里讲一下Spring的事务管理,Spring的事务管理是建立在Aop的基 ...
- Spring的事务管理
事务 事务:是逻辑上一组操作,要么全都成功,要么全都失败. 事务特性(ACID) 原子性:事务不可分割 一致性:事务执行的前后,数据完整性保持一致 隔离性:一个事务执行的时候,不应该受到其他事务的打扰 ...
- spring笔记--事务管理之声明式事务
事务简介: 事务管理是企业级应用开发中必不可少的技术,主要用来确保数据的完整性和一致性, 事务:就是一系列动作,它们被当作一个独立的工作单元,这些动作要么全部完成,要么全部不起作用. Spring中使 ...
- Spring应用——事务管理
事务基础:请参看:http://www.cnblogs.com/solverpeng/p/5720306.html 一.Spring 事务管理 1.前提:事务管理器 在使用 Spring 声明式事务管 ...
- spring,mybatis事务管理配置与@Transactional注解使用[转]
spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述事务管理对于企业应用来说是至关 ...
- Spring高级事务管理难点剖析
1Spring事务传播行为 所谓事务传播行为就是多个事务方法相互调用时,事务如何在这些方法间传播.Spring支持7种事务传播行为 PROPAGATION_REQUIRED(加入已有事务) 如果当前没 ...
随机推荐
- 【一天一道Leetcode】#203.Remove Linked List Elements
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 我的个人博客已创建,欢迎大家持续关注! 一天一道le ...
- Android支持多国语言化Values命名
android多国语言文件夹文件汇总如下: 维吾尔文(中国):values-ug-rCN 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港):values ...
- mysql的left jion:就是left outer join(right join同理)
左外连接: A left jion B on A.id=B.id 就是A表数据不动,将B表里面能和A对应上的数据补充到A表数据后 而右外连接: rignt jion 则是将A补充到B,B不动,保存全部 ...
- 《java入门第一季》之HashSet小案例:获取10个1至20的随机数,要求随机数不能重复
这是基于HashSet集合的唯一性. /* * 编写一个程序,获取10个1至20的随机数,要求随机数不能重复. * * 分析: * A:创建随机数对象 * B:创建一个HashSet集合 ...
- centos7安装jdk,tomcat,msyql(MariaDB)
操作系统版本 CentOS Linux release 7.2.1511 (Core) 安装jdk 下载jdk-8u66-linux-x64.rpm上传到linux上 先改用户权限 然后 rpm -i ...
- ubuntu16.04中可以用于教学的有趣的应用
ubuntu16.04中可以用于教学的有趣的应用 在ubuntu自带的软件中心里,内置了非常丰富的教育应用,可以用于物理,化学等科学课教学,只选取我用过用于教学的软件,优秀的软件不止这些,可以慢慢发掘 ...
- iOS中 WGAFN_网络监控 技术分享
需要用到第三方AFNetworking/SVProgressHUD 没有的可以关注我微博私信我.http://weibo.com/hanjunqiang AppDelegate.m #import & ...
- UNIX环境高级编程——管道和FIFO限制
系统加于管道和FIFO的唯一限制为: OPEN_MAX 一个进程在任意时刻打开的最大描述符数: PIPE_BUF 可原子的写往一个管道或FIFO的最大数据量. OPEN_MAX的值 ...
- RTB--Real TimeBidding模式的互联网广告(实时竞价的广告投放)
RTB(real time bidding)实时竞价允许广告买家根据活动目标.目标人群以及费用门槛等因素对每一个广告及每次广告展示的费用进行竞价.竞价成功后获得广告展示机会,在展示位置上展示广告. 其 ...
- MySQL进阶(一)主外键讲解
1.什么是外键: 作为外键的字段. REFERENCES:映射到主表的字段2. ON DELETE后面的四个参数:代表的是当删除主表的记录时,所做的约定. RESTRICT(限制):如果你想删除的那个 ...