SSM框架之事务管理器的配置 |
您所在的位置:网站首页 › 总务处负责管理的事务是什么 › SSM框架之事务管理器的配置 |
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.propertiesOK! 更多推荐 MybatisHelperPro |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |