spring 对 conection 的事务

本文介绍如何使用Spring的DataSourceUtils工具类改进JDBC Dao层的事务管理,通过示例展示了如何将原始的JDBC连接替换为Spring管理的连接,从而支持更高级的事务控制。

    spring 对 JdbcTemplate……的事务管理不用担心。就是对直接Jdbc实现的Dao事务管理有点小问题,如:我直接,用dataSource.getConnection()。spring是管理不了事务的。原因是Jdbc实现的Dao里的connection是自动提交的。要改用经过spring 处理过的connection = DataSourceUtil.getConnection(dataSource);才行。
    我这有个例子——用户注册,有备份。只是例子而且。
    下面是原始的Dao实现,
备份方法:

    public User backUp(User user) throws SQLException {
        Connection conn 
= dataSource.getConnection();
        
try {
            PreparedStatement pstmt 
= conn.prepareStatement("insert into user(name) values (?)");
            pstmt.setString(
1, user.getName()+" 备份");
            pstmt.executeUpdate();
            
            pstmt 
= conn.prepareStatement("select last_insert_id()");
            ResultSet rs 
= pstmt.executeQuery();
            
if(rs != null && rs.next()) {
                user.setUId(rs.getInt(
1));
            }
        } 
catch (SQLException e) {
            
// TODO Auto-generated catch block
            throw e;
        } 
finally {
            
if(conn != null) {
                
try {
                    conn.close();
                } 
catch (SQLException e) {
                                System.out.println(
"数据库连接关闭失败!");
                }
            }
        }
        
return user;
    }

现在要改成:
    public User backUp(User user) throws SQLException {
        Connection conn 
= DataSourceUtils.getConnection(dataSource);
        
try {
            PreparedStatement pstmt 
= conn.prepareStatement("insert into user(name) values (?)");
            pstmt.setString(
1, user.getName()+" 备份");
            pstmt.executeUpdate();
            
            pstmt 
= conn.prepareStatement("select last_insert_id()");
            ResultSet rs 
= pstmt.executeQuery();
            
if(rs != null && rs.next()) {
                user.setUId(rs.getInt(
1));
            }
        } 
catch (SQLException e) {
            
throw e;
        } 
finally {
            DataSourceUtils.releaseConnection(conn, dataSource);
        }
        
return user;
    }

然后你在逻辑层就可以用spring的任何方式管理事务了。
如:注册
    public User register(User user) throws SQLException {
        userDao.backUp(user);
        userDao.insert(user);
        
return user;
    }


下载方式:https://pan.quark.cn/s/c9b9b647468b ### 初级JSP程序设计教程核心内容解析#### 一、JSP基础概述JSP(JavaServer Pages)是由Sun Microsystems公司创建的一种动态网页技术规范,主要应用于构建动态网站及Web应用。JSP技术使得开发者能够将动态数据静态HTML文档整合,从而实现网页内容的灵活性和可变性。##### JSP的显著特性:1. **动态静态内容的分离**:JSP技术支持将动态数据(例如数据库查询结果、实时时间等)嵌入到静态HTML文档中。这种设计方法增强了网页的适应性和可维护性。2. **易用性**:开发者可以利用常规的HTML编辑工具来编写静态部分,并通过简化的标签技术将动态内容集成到页面中。3. **跨平台兼容性**:基于Java平台的JSP具有优良的跨操作系统运行能力,能够在多种不同的系统环境中稳定工作。4. **强大的后台支持**:JSP能够通过JavaBean组件访问后端数据库及其他资源,以实现复杂的数据处理逻辑。5. **执行效率高**:JSP页面在初次被请求时会被转换为Servlet,随后的请求可以直接执行编译后的Servlet代码,从而提升了服务响应的效率。#### 二、JSP指令的运用JSP指令用于设定整个JSP页面的行为规范。这些指令通常放置在页面的顶部,向JSP容器提供处理页面的相关指导信息。##### 主要的指令类型:1. **Page指令**: - **语法结构**:`<%@ page attribute="value" %>` - **功能**:定义整个JSP页面的运行特性,如设定页面编码格式、错误处理机制等。 - **实例**: ...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值