这篇文章主要介绍在我们开发过程中怎么处理事务,当然编程语言仅限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#中的事务处理例子程序,适合初学者,可以直接用,在数据库的同步控制上很有用
本代码使用H2内存数据库演示spring事务使用,包括编程式事务,声明式事务@Transactional使用,自定义事务事务注解实现自定义事务管理器
spring编程式事务与声明式事务详解,超详细!
COM+并不是COM的新版本,我们可以把它理解为COM的新发展,或者为COM更高层次上的应用.事务性COM+编程这本书让你充分了解COM+。
MySQL编程与事务,数据控制语言DCL,事务控制语言(DTL)
演示了spring编程式事务的实现,通过TransactionTemplate模板进行事务控制
基于SpringMVC的编程式事务源代码示例,一目了然的超简单使用事务的方式,让你一分钟会用事务。
Spring 的事务管理是 Spring 框架中一个比较重要的知识点,该知识点本身并不复杂,只是由于其比较灵活,导致初学者很难把握。本教程从基础知识开始,详细分析了 Spring 事务管理的使用方法,为读者理清思路。
Spring 声明式事务和Spring 编程式事务
Delphi_SQL Server事务处理编程技术.pdf
本书解释了如何通过描述表和因果关系实现COM+运行时服务,介绍了套间、组织以及它们在COM+进程的并发控制中的作用等。
事务与游标编程 事务与游标编程 事务与游标编程 事务与游标编程 事务与游标编程
Microsoft已经紧密地集成了IIS和COM+的功能,这使我们能非常容易地在事务性Web页面编程中利用事务处理应用程序
全面分析_Spring_的编程式事务管理及声明式事务管理.
C#编程 数据库操作应用 在存储过程中使用事务(源码)(源码)C#编程 数据库操作应用 在存储过程中使用事务(源码)(源码)C#编程 数据库操作应用 在存储过程中使用事务(源码)(源码)C#编程 数据库操作应用 在存储过程中使用...
本教程提供的分布式事务解决方案的设计思路在所有微服务架构项目中都适用,与编程语言无关,教程中会重点讲解方案的设计思路。 教程中的样例项目基于龙果学院开源的微支付系统进行实现,使用Dubbo作为服务化框架,...
事务是一个逻辑工作单元,SQL Server 2005 提供了几种自动的可以通过编程来完成的机制,包括事务日志、SQL事务控制语句,以及事务处理运行过程中通过锁定保证数据完整性的机制。当用户对数据库并发访问时,为了确保...
Spring为了简化事务管理的代码:提供了模板类 TransactionTemplate,所以手动编程的方式来管理事务,只需要使用该模板类即可
NULL 博文链接:https://quicker.iteye.com/blog/674029
WCF小实例[包括WCF事务编程]