JAVA中对事物的理解

1.事物是一组操作数据的集合动作

(场景:再开发的时候相信大家都遇到主表和子表的插入问题,当主表插入成功时,子表没有插入成功,这时候我们就要把主表的数据回滚,这个时候我们就要用到事物了)

2.一组处理的步骤或者全部发生或者一步也不执行,我们称该组处理的步骤为一个事物,当所有的步骤操作像一个操作一样完整的执行,我们称该事物被提交。由于其中的一部分或者多步执行失败,导致没有步骤被提交,则事物必须回滚到系统的最初的状态。

Java中的事务处理

  一般J2EE服务器支持三种类型的事务管理。即:JDBC事务,JTA事务,容器管理事务。

  最好不要在程序中同时使用上述三种事务类型;并且,事务要在尽可能短的时间内完成,不要在不同方法中实现事务的使用。下面举两个例子说明JDBC及JTA事务,容器管理事务是在特定的框架中实现的(如:Spring的事务管理)

 

1. JDBC事务

  public String delete(String id) {
    String ID = id;
    db = new getConnection();
    Connection con = db.getConnection();
    try {
      con.setAutoCommit(false);
      db.executeUpdate("delete from helloworld where ID=" + ID); //更新操作1
      db.executeUpdate("delete from helloworld _book where ID=" + ID); //更新操作2
          db.executeUpdate("delete from helloworld_user where ID=" + ID); //更新操作3
          con.commit();//提交JDBC事务
          con.setAutoCommit(true); 
              db.close();
          return “success”;
       }catch (Exception e) {
      con.rollBack();//回滚JDBC事务
      e.printStackTrace();
      db.close();
      return “fail”;
    }
  }

  如上例:更新操作1,2,3只有当三步操作都成功完成才进行提交,否则回滚已经进行的操作。这样,保证了数据的完整性,不会因为突然断电等特殊情况导致的数据错误。

  2.SpringBOOt处理事物,利用注解@Transactional   

A.在ServiceImp 层中对要用到的事物加上@Transactional   注解即可

B.在SpringBOOT启动类中添加注解 @EnableTransactionManagement

 

posted @ 2018-11-23 17:28  周永发  阅读(1073)  评论(0编辑  收藏  举报