Mybatis事物浅谈
2019-10-16 08:10:24来源:博客园 阅读 ()
Mybatis事物浅谈
本篇文章主要对Mybatis事物进行基础的介绍。先回顾JDBC事物,再了解Mybatis里面的事物应用。
1.JDBC的事务管理回顾
JDBC的事务管理是基于Connection对象实现的:
开启事务:connection.setAutoCommit(false)
提交事务:connection.commit()
回滚事务:connection.rollback()
2.事务的特性:ACID
原子性:事务是不可分割的。一个事务里的操作,不可能成功一半
一致性:事务提交前后,数据/状态是一致的
隔离性:事务并发时,事务应该是互不干扰相互独立的
持久性:事务一旦提交,数据就永久保存到磁盘上。
3.事务并发时可能存在的问题:
①脏读:一个事务里读取到另外一个事务未提交的数据。
②不可重复读:一个事务里,多次读取的数据不一致。是受到了其它事务update的干扰。
③虚读/幻读:一个事务里,多次读取的数据不一致。是受到了其它事务insert、delete干扰事务之间的隔离级别不够高,会导致事务并发问题。
使用隔离级别解决事务并发问题
隔离级别 |
脏读 |
不可重复读 |
虚读 |
read uncommitted |
有 |
有 |
有 |
read committed |
无 |
有 |
有 |
repeatable read |
无 |
无 |
有 |
serializable |
无 |
无 |
无 |
两种事物管理的方式:手动提交与自动提交(实际开发中是交给sping控制与我们无关了),增.删.改需要事物,查不需要。
Mybatis的是对JDBC的封装,所以Mybatis在本质上也是基于Connection对象实现的事务管理,只是把管理的代码封装起来了,是使用SqlSession对象进行事务管理的。
1.默认事务管理方式,默认情况下,我们使用工厂对象的openSession()方法得到的SqlSession对象,是关闭了事务自动提交的,即:默认情况下,SqlSession是开启了事务的,需要手动提交。
①获取session对象:factory.openSession()
②操作完数据库之后,需要手动提交事务:sqlSession.commit();
③如果要回滚事务,就使用方法:sqlSession.rollback();
2自动提交事务实现,Mybatis也支持自动提交事务,操作方法如下:
①获取SqlSession对象:factory.openSession(true)
②操作数据库,事务会自动提交
③自动提交事务openSession(true)
自动提交事务_映射器实现类方式_实现类_例:
1 @Override 2 public void save(User user) { 3 SqlSession session = factory.openSession(true);//自动提交了事物 4 session.insert("com.jxjdemo.dao.UserDao.save",user); 5 session.close();//关闭流,释放资源 6 }
手动提交事务_映射器配置文件方式_测试类_例:
1 @Test 2 public void testDelete(){ 3 userDao.delete(57); 4 session.commit(); //手动提交事务 5 }
原文链接:https://www.cnblogs.com/jxearlier/p/11676584.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- MyBatis中的$和#,用不好,准备走人! 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- DDD之4聚合和聚合根 2020-06-07
- 天哪!手动编写mybatis雏形竟然这么简单 2020-06-06
- MyBatis整合双数据源 2020-06-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash