资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

Spring的第十四阶段:Spring的事务管理(01)

Java 更新时间: 发布时间: 计算机考试归档 最新发布

Spring的第十四阶段:Spring的事务管理(01)

事务管理

事务分为声明式和编程式两种:

声明式事务:

声明式事务是指通过 注解的形式 或 xml配置的形式 对事务的各种特性进行控制和管理。

编码式(编程式)事务:

指的是通过编码的方式实现事务的声明。

1、编码方式实现事务:

2、声明式事务环境搭建

2.1、准备测试数据库

##创建tx数据库drop database if exists `tx`;CREATE database `tx`;##切换tx数据库USE `tx`;##创建用户表CREATE TABLE `user` (  `id` int primary key auto_increment,	  `username` varchar(50) NOT NULL,  `money` int(11) DEFAULT NULL);##插入数据insert  into `user`(`username`,`money`) values ('张三',1000),('李四',1000);##创建图书表create table `book`(    `id` int primary key auto_increment,    `name` varchar(500) not null,    `stock` int);##插入数据insert into book(`name`,`stock`) values('java编程思想',100),('C++编程思想',100);##查看数据select * from book;select * from user;

2.2、创建一个Java工程,导入Jar包

导需要以下的jar包:

druid-1.1.9.jarjunit_4.12.jarmysql-connector-java-5.1.37-bin.jarorg.hamcrest.core_1.3.0.jarspring-aop-5.2.5.RELEASE.jarspring-aspects-5.2.5.RELEASE.jarspring-beans-5.2.5.RELEASE.jarspring-context-5.2.5.RELEASE.jarspring-core-5.2.5.RELEASE.jarspring-expression-5.2.5.RELEASE.jarspring-jcl-5.2.5.RELEASE.jarspring-jdbc-5.2.5.RELEASE.jarspring-orm-5.2.5.RELEASE.jarspring-test-5.2.5.RELEASE.jarspring-tx-5.2.5.RELEASE.jar
@Repositorypublic class UserDao {    @Autowired    JdbcTemplate jdbcTemplate;    public void updateUser(){        // 演示的主要内容是事务        jdbcTemplate.update("update user set `username` = 'user用户表被修改了'");    }}@Repositorypublic class BookDao {    @Autowired    JdbcTemplate jdbcTemplate;    public void updateBook(){        jdbcTemplate.update("update book set `name` = 'book图书表被修改了'");    }}@Servicepublic class TransactionService {    @Autowired    private BookDao bookDao;    @Autowired    private UserDao userDao;    public void multiUpdate(){        bookDao.updateBook();             userDao.updateUser();    }}

3、测试Service的默认事务

测试service服务层的默认事务

@Servicepublic class TransactionService {    @Autowired    private BookDao bookDao;    @Autowired    private UserDao userDao;    public void multiUpdate(){        bookDao.updateBook();        int i = 12 / 0;        userDao.updateUser();    }}

3.1、异常的演示

数据库中 图书表修改成功

用户表修改失败:

3.2、Spring事务引入的分析------PlatformTransactionManager类简单介绍

在Spring框架中,事务管理由一个接口 PlatformTransactionManager 来定义如何管理:

以下是PlatformTransactionManager实现类:

Spring底层事务管理原理解析:

4、使用Spring的注解声明事务管制

测试Spring的声明式事务

ApplicationContext.xml配置文件:

                                  

5.noRollbackFor和noRollbackForClassName测试不回滚的异常

Spring的事务管理默认是对抛出的RunTimeException 运行时异常. 以及它的子异常进行自动的回滚操作.

noRollbackFor和noRollbackForClassName测试不回滚的异常

@Transactional(noRollbackForClassName = "java.lang.ArithmeticException")public void multiUpdate() throws Exception {    bookDao.updateBook();    int i = 12 / 0;    userDao.updateUser();}
转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1095557.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【Spring的第十四阶段:Spring的事务管理(01)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2