美文网首页mysql
MyBits数据库框架事物的使用心得

MyBits数据库框架事物的使用心得

作者: 吃猫的鱼0 | 来源:发表于2018-01-04 10:18 被阅读109次

事务的四个特性:

  • 原子性:事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。
  • 一致性:事物发生前后数据的状态必须一致。
  • 隔离性:多个事物同时处理事物时,事物间的操作是互相隔离的。
  • 持久性:对于任意已提交事务,对数据库中的数据的改变就是永久性的。

Mybits事物处理

当对数据库进行多表操作的时候就很容易出现不同步的现象,这时候就需要采用事物对数据库进行操作了。

利用了mybits怎么对数据进行操作呢?

刚开始的时候以为,只要在方法上添加了 @Transactional 就可以简单的处理事物了

但是在使用中发现出现了问题,当没有异常的时候 事物不回滚,

后开看mybits的api发现了另一种操作事物的方法

SqlSession sqlSession = sqlSessionFactory.openSession();//开启事物
SetUpMapper setUpMapper = sqlSession.getMapper(SetUpMapper.class);  //将dao交给事物管理
ShoppingCartsMapper shoppingCartsMapper = sqlSession.getMapper(ShoppingCartsMapper.class);  //将dao交给事物管理
try {
    We(setUpMapper);//数据库操作
    Integer num=setUpMapper.saveApkVersion(apkVersion);//数据库操作
    sqlSession.rollback();
    //int i = 2 / 0; // 触发运行时异常  
} catch (Exception e) {

}finally{
    sqlSession.close();  //关闭清理资源
}

然后再这种操作下发现这个sqlSession不能回滚(回滚后数据还是存到数据库),

而且当sqlSession.commit()后如果后面出现异常这个操作反而回滚了。

而且不用上面操作只有当出现异常后不做任何操作都会出现回滚的现象,(也就是说只要出现异常就会出现回滚)

为什么呢?为什么会出现这种情况呢?

这时候突然想到,在配置spring的时候讲事物交给spring来管理,也就是说,事物是由spring来管的和mybits现在没关系了,

而spring是用什么来管的呢?/** @Transactional(rollbackFor = Exception.class)

就是利用捕捉的异常来管理的,如果出现异常就在这个地方回滚

所以这时候就要注意
注:不可catch Exception或RuntimeException而不抛出: 

而上面的那个回滚呢是没有和spring集成的时候利用mybits来操作的不能说有错只用在是不同的地方

嵌套事务

  • 1、内外都无try Catch的时候,外部异常,全部回滚。
  • 2、内外都无try Catch的时候,内部异常,全部回滚。
  • 3、外部有try Catch时候,内部异常,全部回滚
  • 4、内部有try Catch,外部异常,全部回滚
  • 5、友情提示:外层方法中调取其他接口,或者另外开启线程的操作,一定放到最后!!!(因为调取接口不能回滚,一定要最后来处理)

相关文章

  • MyBits数据库框架事物的使用心得

    事务的四个特性: 原子性:事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。 一致性:事物发生前...

  • 高性能安卓数据库框架实战

    安卓数据库框架确实很多,我使用过许多安卓数据库框架,无论是基于sqlite数据库框架ormlite,greenda...

  • ORM框架MyBatis与Hibernate对比

    1.开发速度对比 Hibernate的学习成本要比MyBatis高,MyBits框架相对容易上手。比较二者的开发速...

  • 5. spring 声明示事务剖析

    概要: 数据库的事物的基本特性 Sring 对事物的支持与使用 aop 事物底层实现原理 一、数据库的事物的基本特...

  • 数据库框架LitePal使用指南

    数据库框架LitePal使用指南 这里只是对于使用 LitePal框架的常用API总结笔记 基础配置 使用注意 数...

  • 文档

    如何使用 数据库:mysql 后端框架:spring + springMVC + MyBatis 前端框架: vu...

  • Android 数据库框架ormlite 使用精要

    Android 数据库框架ormlite 使用精要 前言 本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,...

  • MyBatis 基础

    数据库框架在实际开发中是经常使用的,本节课程将以 MyBatis 为例,介绍数据库框架的基本原理和使用方法。 1、...

  • MyBatis的事物管理和缓存

    MyBatis的事物 事物的概念 在Java语言数据库框架中,数据库的事务管理都是非常重要的。每个业务逻辑都是由一...

  • Java注解与自定义注解应用

    在Java编程中,注解已经越来越普及了,在未来也占据重要的地位;其中是慢大多流行的框架Spring、Mybits、...

网友评论

    本文标题:MyBits数据库框架事物的使用心得

    本文链接:https://www.haomeiwen.com/subject/feolnxtx.html