MyBatis框架事务与缓存

95 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情

事务

Mybatis 框架是对 JDBC 的封装,所以 Mybatis 框架的事务控制方式有两种,一种是容器进行事务管理的,一种是程序员手工决定事务的提交与回滚。

SqlMapConfig.xml文件中设定的事务处理的方式。

image.png

Connection 对象的 setAutoCommit()方法来设置事务提交方式的。自动提交和手工提交。该标签用于指定MyBatis 所使用的事务管理器。

MyBatis 支持两种事务管理器类型:JDBC MANAGED

JDBC:使用 JDBC 的事务管理机制。即,通过 Connection 的 commit()方法提交,通过 rollback()方法回滚。但默认情况下,MyBatis 将自动提交功能关闭了,改为了手动提交。即程序中需要显式的对事务进行提交或回滚。从日志的输出信息中可以看到。

image.png

在获得SqlSession的时候,如果openSession()是无参或者是false,则必须手工提交事务,如果openSession(true),则为自动提交事务,在执行完增删改后无须commit(),事务自动提交。

session = factory.openSession(true);

缓存

将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。mybatis提供查询缓存,用于减轻数据库压力,提高数据库性能。

1. 缓存执行机制

在进行数据库访问时,首先去访问缓存,如果缓存中有要访问的数据,则直接返回客户端,如果没有则去访问数据库,在库中得到数据后,先在缓存放一份,再返回客户端。如下图。

image.png