事务管理

    事务管理两种方式: 向下传递,ThreadLocal

向下传递的方式(依赖)

    缺点:不利于测试

Service层
获取连接conn(Connection)
转账(conn)
收账(conn)
提交事务
catch(){
事务回滚
} dao层(通过service层传递过来的Connection对象来保证是同一个连接 ) QueryRunner qr=new QueryRunner();
qr.update(conn,sql,Parameter....);

  只要使用同一个连接(Connection对象)就会在一个事务,dao层的类中的方法只能访问一次数据库,如果多次访问数据库,就得把这个业务放在service层进行操作了,使用业务成进行多次调用到层的方法,事务管理主要是使用的Connection对象来管理事务的。

使用线程来实现事务的管理

  使用ThreadLocal来管理当前线程

使用jdbcUtils来进行事务的管理

    这样dao层获取连接只需要从JDBCUtils中获取连接即可,在业务层开启事务、提交事务、回滚事务。

package com.baidu.utils;

import java.sql.Connection;
import java.sql.SQLException; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; public class JDBCUtils2 {
//从c3p0里面来获取数据源
private static final ComboPooledDataSource dataSource = new ComboPooledDataSource();
//这是当前线程对象
private static final ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
//获取连接
public static Connection getConnection() throws SQLException {
Connection conn = null;
try {
conn = tl.get();
if(conn == null){
//从连接池中获取连接
conn = dataSource.getConnection();
//把获取的连接对象添加到当前线程中去
tl.set(conn);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
} //开启事务
public static void beginTransfer() throws SQLException{
Connection conn = tl.get();
conn.setAutoCommit(false);
}
//提交事务
public static void commitTransfer() throws SQLException{
Connection conn = tl.get();
conn.commit();
}
//回滚事务
public static void rollbackTransfer() throws SQLException{
Connection conn = tl.get();
conn.rollback();
}
//获取数据源
public static DataSource getDataSource() {
return dataSource;
}
}

  

day23(事务管理)的更多相关文章

  1. Spring基于AOP的事务管理

                                  Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...

  2. spring声明式事务管理总结

    事务配置 首先在/WEB-INF/applicationContext.xml添加以下内容: <!-- 配置事务管理器 --> <bean id="transactionM ...

  3. SpringMVC+MyBatis整合——事务管理

    项目一直没有做事务管理,这几天一直在想着解决这事,今天早上终于解决了.接下来直接上配置步骤. 我们项目采用的基本搭建环境:SpringMVC.MyBatis.Oracle11g.WebLogic10. ...

  4. Spring Boot中的事务管理

    原文  http://blog.didispace.com/springboottransactional/ 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合 ...

  5. 【Java EE 学习 54】【OA项目第一天】【SSH事务管理不能回滚问题解决】【struts2流程回顾】

    一.SSH整合之后事务问题和总结 1.引入问题:DAO层测试 假设将User对象设置为懒加载模式,在dao层使用load方法. 注意,注释不要放开. 使用如下的代码块进行测试: 会报错:no sess ...

  6. 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】

    一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...

  7. Spring的事务管理

    事务 事务:是逻辑上一组操作,要么全都成功,要么全都失败. 事务特性(ACID) 原子性:事务不可分割 一致性:事务执行的前后,数据完整性保持一致 隔离性:一个事务执行的时候,不应该受到其他事务的打扰 ...

  8. ssh简化后之事务管理

    为了能让大家更好的了解,所以今天跟大家分享整个项目.ps:ssh环境的搭建我就不一一讲解了,请大家参考 http://www.cnblogs.com/zczc1996/p/5842367.html. ...

  9. spring事务管理器设计思想(二)

    上文见<spring事务管理器设计思想(一)> 对于第二个问题,涉及到事务的传播级别,定义如下: PROPAGATION_REQUIRED-- 如果当前没有事务,就新建一个事务.这是最常见 ...

随机推荐

  1. vs 调试 IE显示“无法显示该网页

    在用VS2010调试网站的时候,突然页面不能正常显示了,IE显示“无法显示该网页”.症状一: IE地址栏里面显示的端口号和桌面任务栏右下角“ASP.NET Development Server”的端口 ...

  2. Andriod——手机尺寸相关的概念 +尺寸单位+关于颜色

    手机的尺寸: 屏幕对角线的长度,单位为英寸(2.54cm) 手机的分辨率: 屏幕能显示的像素的数量, 一般用在长方向上数量*宽方向上数量来表达 手机的像素密度: pixels per inch,也称P ...

  3. iOS.Debug.Simulator

    1. iOS Simulator Tips & Tricks http://code.tutsplus.com/tutorials/ios-simulator-tips-tricks--mob ...

  4. 2019年学Java开发有优势吗?

    随着信息科技的发展,在我们的日程生活和工作中到处充斥和使用着互联网信息技术.事实说明,互联网已经越来越广泛地深入到人们生活的方方面面,Java技术服务市场需求空缺会越来越大.学会一门IT技术,将拥有更 ...

  5. iOS设置图片名称、启动图片、防止TabBar图片和文字渲染

    设置App的名称 设置App的启动图片 需要注意点是,App要杀掉重启才能显示出启动图片 2种方法防止图片被渲染 1. vc02.tabBarItem.image = [UIImage imageNa ...

  6. [SoapUI] Groovy获取HTTP Status

    def value = messageExchange.responseHeaders["#status#"] def httpResponseHeaders = context. ...

  7. 第一个spring boot 程序

    安装.运行.预览省略 错误1:8080端口被IIS占用,关闭它 Description: The Tomcat connector configured to listen on port 8080 ...

  8. DB2有五种约束

    DB2有五种约束: NOT NULL 约束是这样一种规则,它防止在表的一列或多列中输入空值. 唯一约束(也称为唯一键约束)是这样一种规则,它禁止表的一列或多列中出现重复值.唯一键和主键是受支持的唯一约 ...

  9. js循环遍历数组

    一维数组的遍历 <script> //循环遍历数组 var animals = ["cat",'dog','human','whale','seal']; var an ...

  10. windows 10 开发学习资料,Windows-universal-samples学习笔记系列一:App settings

    windows 10 通用代码范例: https://github.com/Microsoft/Windows-universal-samples 相关视频:https://mix.office.co ...