SSM框架之事务管理器的配置

您所在的位置:网站首页 总务处负责管理的事务是什么 SSM框架之事务管理器的配置

SSM框架之事务管理器的配置

2023-08-10 21:38| 来源: 网络整理| 查看: 265

SSM 框架学习 (Mybatis&Spring篇)

前面已经完成了Mybatis和Spring框架的学习与整合,但并没配置有事务管理器。

配置这东西前我们首先得知道这是个什么东西,有什么用?

事务管理器就是用于管理对数据库的一系列读写操作,进行统一提交或回滚,这样能有效的防止数据库出现问题,如:脏读,幻读等。关于幻读、脏读可以看看这篇文章,推荐了解【事务属性之隔离级别】

配置前还需要先了解事务属性,有五个:事务传播机制、事务隔离等级、事务超时时间、是否只读、回滚规则

#####事务传播机制

属性值说明REQUIRED(默认值)指定的方法必须在事务内执行。若当前存在事务,就加入到当前事务中;若当前没有事务,则创建一个新事务。REQUIRED能够满足大多数事务需求,可做首选。SUPPORTS指定的方法支持当前事务,但若当前没有事务,也可以以非事务方式执行。NOT_SUPPORTED指定的方法不能在事务环境中执行,若当前存在事务,就将当前事务挂起。REQUIRES_NEW总是新建一个事务,若当前存在事务,就将当前事务挂起,直到新事务执行完毕。MANDATORY指定的方法必须在当前事务内执行,若当前没有事务,则直接抛出异常。NESTED指定的方法必须在事务内执行。若当前存在事务,则在嵌套事务内执行;若当前没有事务,则创建一个新事务。NEVER指定的方法不能在事务环境下执行,若当前存在事务,就直接抛出异常。

#####事务隔离等级

属性值说明DEFAULT(默认)采用数据库默认的事务管理级别。Mysql默认为REPEATABLE_READ;Oracle默认为READ_COMMITTEDREAD_UNCOMMITTED(未提交读取)允许脏读取,但不允许更新丢失。READ_COMMITTED(提交读取)解决脏读,存在不可重复读与幻读。REPEATABLE_READ(可重复读取)解决脏读、不可重复读,存在幻读。SERIALIZABLE(序列化)不存在并发问题,最严格隔离级别,但并不推荐。

#####其他属性

属性名说明timeout事务超时时间,允许事务运行的最长时间,以秒为单位。默认值为-1,表示不超时read-only事务是否为只读,默认值为falserollback-for设定能够触发回滚的异常类型;Spring默认只在抛出runtime exception时才标识事务回滚,设定多个可用逗号隔开。no-rollback-for设定不触发回滚的异常类型;Spring默认checked Exception不会触发事务回滚,设定规则同上

好,到这你应该已经对事务管理器有所了解了,现在介绍如何配置,下面将介绍两种配置方式,这里贴主要的配置代码,就不贴整个项目代码了。

######1、全配置文件配置 这些配置写在Spring配置文件中applicationContext.xml,连接数据库信息就根据自己的写在database.properties属性文件并放到resources文件夹。

classpath:database.properties

######2、注解配置方式 首先要在业务层的实现方法里添加@Transactional实现事务支持,如下:

@Transactional @Service("userService") public class UserServiceImp implements UserService { @Autowired public UserMapper userMapper; // 属性添加用逗号隔开 @Transactional(propagation = Propagation.SUPPORTS) public List findUserWithName(User user) { try { return userMapper.getUserList(user); } catch (RuntimeException e) { e.printStackTrace(); throw e; } } }

添加完注解回到配置applicationContext.xml部分,除了数据源配置部分,现在只剩两条配置了

classpath:database.properties

OK!

更多推荐 MybatisHelperPro



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3