`
tmj_159
  • 浏览: 705835 次
  • 性别: Icon_minigender_1
  • 来自: 永州
社区版块
存档分类
最新评论

事务处理之二(编程中的事务)

 
阅读更多

这篇文章主要介绍在我们开发过程中怎么处理事务,当然编程语言仅限java.

文章内容会从不使用任何框架直接用jdbc怎么处理事务,到使用mybatis,hibernate逐一讲解。

 

一、JDBC事务。

       JDBC事务是通过Connection对象来完成事务的,主要的逻辑如下

//得到Connection对象后,设置不自动提交
conn.setAutoCommit(false);
//手动提交
conn.commit();
//事务的回滚
conn.rollback(); 

 

二、mybatis事务

下面的内容来自文档

http://mybatis.github.io/mybatis-3/configuration.html#environments

Mybatis支持两种类型的事务JDBC|MANAGED,我们可以在下面的内容中设置

<environments default="development">
  <environment id="development">
    <transactionManager type="JDBC">
      <property name="..." value="..."/>
    </transactionManager>
    <dataSource type="POOLED">
      <property name="driver" value="${driver}"/>
      <property name="url" value="${url}"/>
      <property name="username" value="${username}"/>
      <property name="password" value="${password}"/>
    </dataSource>
  </environment>
</environments>

 注意到transaction中有个property的属性,这个属性主要用途在于在type=MANAGED的时候

<transactionManager type="MANAGED">
  <property name="closeConnection" value="false"/>
</transactionManager>

 因为默认情况下连接会关闭,但是有些容器不希望关闭,它们可能还会用到容器做一些其它的事情,所以可以通过这个属性来控制。

 

使用有以下几个步骤

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream(file));
SqlSession session = sqlSessionFactory.openSession(false); //设置不自动提交
try {
  BlogMapper mapper = session.getMapper(BlogMapper.class);
  mapper.updateBlog(blog);
  mapper.increaseOperation();
  session.commit(); //手动提交
}catch(Exception e){
  e.printStackTrace();
  session.rollback(); //回滚
} finally {
  session.close();
}

 仔细一对比发现基本一样嘛,其实框架用的也是基本的api,所以无论在任何时候都需要重视基础知识。

 想知道mybatis是如何实现事务管理的,点MyBatis事务管理源码

 

 三、hibernate事务

 //TODO

分享到:
评论

相关推荐

    C#中的事务处理,数据库编程中常用

    1. **原子性(Atomicity)**:事务中的每个操作要么全部完成,要么全部不完成,不存在部分完成的情况。如果在事务执行过程中发生错误,系统会回滚到事务开始前的状态。 2. **一致性(Consistency)**:事务执行后,...

    java事务处理详解

    Spring是Java事务处理的核心功能之一。Spring提供了三种方式来处理事务:编程式事务、声明式事务和注解式事务。 编程式事务是指在Java代码中编写事务处理逻辑。这种方式需要开发人员手动控制事务的开始、提交和回滚...

    spring编程式事务实现

    编程式事务管理允许开发者在代码中直接控制事务的开始、提交、回滚等操作。这种方式提供了更大的灵活性,但可能导致事务管理代码分散在整个应用中,增加维护难度。通常,这种方式适用于那些需要自定义复杂事务逻辑...

    易语言学习进阶事务处理

    3. **数据操作**:在事务中,你可以进行增删改查(CRUD)等数据库操作。源码会展示如何使用SQL语句,以及如何通过`执行SQL`命令执行这些操作。 4. **事务提交与回滚**:如果所有操作都成功,你需要提交事务以保存...

    PHP事务处理实例 mysql事务处理的意义

    #### 二、MySQL事务处理方法 MySQL提供了两种主要的方式来处理事务: 1. **使用BEGIN、ROLLBACK、COMMIT命令** - **BEGIN** 命令用于启动一个新的事务。 - **ROLLBACK** 命令用于撤销自最近一次BEGIN或COMMIT...

    spring 自定义事务管理器,编程式事务,声明式事务@Transactional使用

    本教程将深入探讨如何在Spring中实现自定义事务管理器、编程式事务处理以及声明式事务`@Transactional`的使用。 首先,让我们了解事务管理的基本概念。事务是一组数据库操作,这些操作要么全部执行,要么全部回滚,...

    Java中的事务处理

    - **原子性(Atomicity)**:事务中的所有操作要么全部完成,要么全部不完成,不存在部分执行的情况。 - **一致性(Consistency)**:事务完成后,系统状态将从一个一致状态转换到另一个一致状态。 - **隔离性...

    Delphi_SQL Server事务处理编程技术.pdf

    描述中提到的“数据库事务处理原理和技术”、“实例”、“深入探讨”等关键词,进一步指明文档将详细解释Delphi环境下SQL Server事务处理的相关概念、原理及具体的编程实现。 从给出的部分内容来看,文档着重于以下...

    spring声明事务,编程事务实现

    Spring 声明事务、编程事务实现 Spring 声明事务是指使用 Spring 框架来管理事务,实现事务控制。声明式事务管理是建立在 AOP 之上的,它的本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务...

    Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)

    本篇文章将重点讨论如何在Spring框架中集成Hibernate,并探讨编程式事务管理和Spring AOP的声明式事务。 首先,让我们理解Spring与Hibernate的集成。为了整合这两个库,你需要在Spring配置文件中定义Hibernate的...

    易语言学习进阶事务处理源码

    在易语言的学习过程中,进阶事务处理是提升技能的重要环节。事务处理通常涉及到数据库操作、多线程、错误处理和程序流程控制等复杂技术,对于软件的稳定性和效率有着至关重要的作用。 在这个“易语言学习进阶事务...

    全面分析 Spring 的编程式事务管理及声明式事务管理

    1. **基于XML的声明式事务管理**: 在Spring的配置文件中,我们可以通过`&lt;tx:advice&gt;`、`&lt;aop:config&gt;`等元素定义事务的边界,指定哪些方法需要在事务中运行。 2. **基于注解的声明式事务管理**: 使用@Transactional...

    spring学习之八--Hibernate编程式事务

    而事务的传播行为则决定了在一个事务中的方法调用另一个事务方法时,如何处理新的事务。 通过以上讨论,我们了解到在Spring中使用Hibernate进行编程式事务管理的基本概念、使用方法以及注意事项。这有助于我们在...

    全面分析_Spring_的编程式事务管理及声明式事务管理.

    在Java开发领域,Spring框架是不可或缺的重要组成部分,尤其在企业级应用中,它提供了丰富的功能,包括但不限于依赖注入、AOP(面向切面编程)以及事务管理。本篇文章将深入探讨Spring中的两种主要事务管理方式:...

    spring学习笔记(十五)-编程式事务例子

    这部分代码可能演示了如何在Hibernate Session中开启、提交和回滚事务,以及如何处理事务中的异常。 总结来说,这篇笔记介绍了Spring的编程式事务管理,包括使用PlatformTransactionManager接口,事务的ACID特性,...

    Spring声明式事务处理

    例如,`&lt;tx:method&gt;`标签用于指定哪些方法需要在事务中执行,可以通过`name`属性指定方法名,`propagation`属性定义事务传播行为,`isolation`定义隔离级别,`timeout`设定超时时间,`rollback-for`和`no-rollback-...

    JAVA设计模式之事务处理

    "JAVA设计模式之事务处理"主要关注如何在业务逻辑中有效地管理和控制事务。 事务处理在企业级应用中至关重要,因为它确保数据的一致性和完整性。Java平台提供了Java Transaction API (JTA) 来处理全局事务,适用...

Global site tag (gtag.js) - Google Analytics