五、事务操作1

简介: 五、事务操作1

说明

仅供学习交流使用,
笔记作于
【尚硅谷Spring5框架教程(idea版)-哔哩哔哩】

五、事务操作

事务概念

1、什么是事务

(1)事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败

(2)典型场景:银行转账

  • lucy 转账100元给 mary
  • lucy少100,mary多100

2、事务特性(ACID)

(1)原子性

(2)一致性

(3)隔离性

(4)持久性

事务操作(搭建事务操作环境)



1、创建数据库表,添加记录





2、创建service,搭建dao,完成对象创建和注入关系

(1)service注入dao,在dao注入JdbcTemplate,在JdbcTemplate注入DataSource

新建模块spring5_txdemo1/service/UserService
package com.atguigu.spring5.service;
import com.atguigu.spring5.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
    //注入dao
    @Autowired
    private UserDao userDao;
}
dao/UseDao
package com.atguigu.spring5.dao;
public interface UserDao {
}
dao/UseDaoImpl
package com.atguigu.spring5.dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class UserDaoImpl implements UserDao{
    @Autowired
    private JdbcTemplate jdbcTemplate;
}

3、在dao创建两个方法,多钱和少钱的方法,在service创建方法(转账的方法)

UserDaoImpl
//lucy转账100给mary
    //少钱
    @Override
    public void reduceMoney() {
        String sql="update t_account set money=money-? where username=?";
        jdbcTemplate.update(sql,100,"lucy");
    }
    //多钱
    @Override
    public void addMoney() {
        String sql="update t_account set money=money+? where username=?";
        jdbcTemplate.update(sql,100,"mary");
    }
UserService
    //转账的方法
    public void accountMoney(){
        //lucy少100
        userDao.reduceMoney();
        //mary多100
        userDao.addMoney();
    }
test/testTx
package com.atguigu.spring5.test;
import com.atguigu.spring5.service.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class testTX {
    @Test
    public void testAccount(){
        ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userService", UserService.class);
        userService.accountMoney();
    }
}

4、上面代码,如果正常执行没有问题的,但是如果代码执行过程中出现异常,有问题



(1)上面问题如何解决呢?

  • 使用事务进行解决

(2)事务操作过程


事务操作(Spring事务管理介绍)

1、事务添加到JavaEE三层结构里面Service层(业务逻辑层)

2、在Spring进行事务管理操作
(1)有两种操作:编程式事务管理和声明式事务管理(使用)

3、声明式事务管理

(1)基于注解方式

(2)基于xml配置文件方式

4、在Spring进行声明式事务管理,底层使用AOP原理

5、Spring事务管理API

(1)提供一个接口,代表事务管理器,这个接口针对不同的框架提供不同的实现类



事务操作(注解声明式事务管理)

1、在spring配置文件配置事务管理器

bean1.xml
 <!--创建事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!--注入数据源-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>
相关文章
|
XML Java 数据格式
五、事务操作2
五、事务操作2
86 0
|
9月前
|
Java 数据库
JPA - EntityTransaction与事务
JPA - EntityTransaction与事务
82 0
|
C# 数据库 消息中间件
|
数据库 关系型数据库 Oracle
事务xmin,xmax
原理:在元组的头部记录着2个特殊的标记值,xmin和xmax;xmin表示插入该元组的事务号,xmax表示删除该元组的事务号 执行select查询时,会首先获取一个数据库快照,该快照也包括xmin和xmax,这里的xmin表示当前已完成的事务的最小id,xmax表示正在执行的事务的最大id,任何小于xmin的事务被认为已完成,任何大于xmax的事务被认为尚未结束;位于xmin与xmax之间的事务可能已经完成,也可能尚未完成,视情况而定。
1138 0
|
C# 机器学习/深度学习 数据库
C#实现的事务
1、创建事务的结构 SqlConnection sqlConnection = new SqlConnection(); ...初始化连接 // 开启事务 SqlTransaction sqlTransaction = sqlConnection.
688 0
|
Oracle 安全 Java
事务详解(1)
你好看官,里面请!今天笔者讲的是事务。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
117 2
|
人工智能 关系型数据库 MySQL
事务详解
事务是逻辑上的一组操作,要么都执行,要么都不执行。
85 0
|
SQL 存储 Oracle
事务是什么
事务是什么
|
SQL 存储 关系型数据库
|
7月前
|
SQL Oracle 关系型数据库
第7章 事务
第7章 事务
42 0

热门文章

最新文章