spring-4-申明事务

categories: spring5

事务回顾

  • 事务在项目开发过程非常重要,涉及到数据的一致性的问题,不容马虎!

  • 事务管理是企业级应用程序开发中必备技术,用来确保数据的完整性和一致性。

事务就是把一系列的动作当成一个独立的工作单元,这些动作要么全部完成,要么全部不起作用

事务四个属性ACID

  • 原子性(atomicity)
    • 事务是原子性操作,由一系列动作组成,事务的原子性确保动作要么全部完成,要么完全不起作用
  • 一致性(consistency)
    • 一旦所有事务动作完成,事务就要被提交。数据和资源处于一种满足业务规则的一致性状态中
  • 隔离性(isolation)
    • 可能多个事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏
  • 持久性(durability)
    • 事务一旦完成,无论系统发生什么错误,结果都不会受到影响。通常情况下,事务的结果被写到持久化存储器中

测试事务

userDao接口新增两个方法,删除和增加用户

//添加一个用户
int addUser(User user);
 
//根据id删除用户
int deleteUser(int id);

mapper文件,我们故意把 deletes 写错,测试!

 <insert id="addUser" parameterType="com.kuang.pojo.User">
 insert into user (id,name,pwd) values (#{id},#{name},#{pwd})
 </insert>
 
 <delete id="deleteUser" parameterType="int">
 deletes from user where id = #{id}
</delete>

测试

public class EmployeeMapperImpl extends SqlSessionDaoSupport implements EmployeeMapper {

    public List<Employee> getEmployees() {
        return getSqlSession().getMapper(EmployeeMapper.class).getEmployees();
    }

    public int addEmployee(Employee employee) {

        return getSqlSession().getMapper(EmployeeMapper.class).addEmployee(employee);
    }

    public int deleteEmployee(int id) {
        return getSqlSession().getMapper(EmployeeMapper.class).deleteEmployee(id);
    }

    //多个事务的简单程序整合
    public void test1(){
        Employee newEmployee = new Employee(50, "拉纳", "男", "oo.pp@cop");
        EmployeeMapper mapper = getSqlSession().getMapper(EmployeeMapper.class);
        mapper.addEmployee(newEmployee);
        System.out.println("已添加50号");
        mapper.deleteEmployee(5);
        System.out.println("删除5号");
    }
}

测试

@org.junit.Test
public void test1(){
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("Application.xml");
    EmployeeMapperImpl employeeMapperImpl = context.getBean("employeeMapperImpl", EmployeeMapperImpl.class);
    employeeMapperImpl.test1();
}

报错:sql异常,delete写错了

结果 :插入成功!

没有进行事务的管理;我们想让他们都成功才成功,有一个失败,就都失败,我们就应该需要事务!

以前我们都需要自己手动管理事务,十分麻烦!

但是Spring给我们提供了事务管理,我们只需要配置即可;

posted @ 2021-06-07 15:59  Coder-Wang  阅读(34)  评论(0编辑  收藏  举报