1.MyBatis3.x 的事务管理形式
- 使⽤JDBC的事务管理
使⽤ java.sql.Connection对象完成对事务的提交(commit())、回滚(rollback())、关闭(close()) - 使⽤MANAGED的事务管理
MyBatis⾃身不会去实现事务管理,⽽让程序的容器如(Spring, JBOSS)来实现对事务的管理
- 事务⼯⼚TransactionFactory 的两个实现类
JdbcTransactionFactory->JdbcTransaction
ManagedTransactionFactory->ManagedTransaction - 注意:如果不是web程序,然后使⽤的事务管理形式是MANAGED, 那么将没有事务管理功能
2.Mysql的Innodb和MyISAM引擎的区别
区别项 | Innodb | myisam |
---|---|---|
事务 | ⽀持 | 不⽀持 |
锁粒度 | ⾏锁,适合⾼并发 | 表锁,不适合⾼并发 |
是否默认 | 默认 | ⾮默认 |
⽀持外键 | ⽀持外键 | 不⽀持 |
适合场景 | 读写均衡,写⼤于读场景,需要事务 | 读多写少场景,不需要事务 |
全⽂索引 | 可以通过插件实现, 更多使⽤ElasticSearch | ⽀持全⽂索引 |
- MyISAM不⽀持事务,如果需要事务则改为innodb引擎 更改数据库的表⾥⾯的引擎
3.MyBatis3.x 的事务控制
- 为什么原先没进⾏commit操作,也可以插⼊成功
因为原先是myisam引擎,没有事务,直接插⼊成功 - 检查数据库的 引擎 ,改为innodb
- 案例实战
- 事务管理形式 MANAGED,设置⾮⾃动提交,然后注释 commit, 依旧可以保存成功
- 不⽤重点关注,公司开发项⽬的事务控制基本是交给Spring,或者使⽤分布式事务