什么事务? 事务是一些sql序列的集合, 是多条sql, 作为一个整体执行。
mysql执行事务
beginTransaction 开启事务
insert into student() values.....
select * from student where id=1001
update school set name=xxx where id=1005
endTransaction 事务结束
什么情况下需要使用事务?
一个操作需要多条(2条或2条以上的sql)sql语句一起完成, 操作才能成功。
5.2 在程序中事务在哪说明
事务:加在业务类的方法上面(public方法上面),表示业务方法执行时,需要事务的支持。
public class AccountService{
private AccountDao dao;
private MoneyDao dao2;
// 在service(业务类)的public方法上面,需要说明事务。
public void trans(String a, String b, Integer money){
dao.updateA();
dao.updateB();
dao2.insertA();
}
}
public class AccountDao{
public void updateA(){}
public void updateB(){}
}
public class MoneyDao{
public void insertA(){}
public void deleteB(){}
}
5.3 事务管理器
5.3.1 不同的数据库访问技术,处理事务是不同的
1)使用jdbc访问数据库, 事务处理。
public void updateAccount(){
Connection conn = ...
conn.setAutoCommit(false);
stat.insert()
stat.update();
conn.commit();
con.setAutoCommit(true)
}
2) mybatis执行数据库,处理事务
public void updateAccount(){
SqlSession session = SqlSession.openSession(false);
try{
session.insert("insert into student...");
session.update("update school ...");
session.commit();
}catch(Exception e){
session.rollback();
}
}
5.3. 2 spring统一管理事务, 把不同的数据库访问技术的事务处理统一起来。
使用spring的事务管理器,管理不同数据库访问技术的事务处理。 开发人员只需要掌握spring的事务处理一个方案, 就可以实现使用不同数据库访问技术的事务管理。
管理事务面向的是spring, 有spring管理事务,做事务提交,事务回顾。
5.3.3 Spring事务管理器
Spring框架使用事务管理器对象,管理所有的事务。
事务管理器接口: PlatformTransactionManager
作用: 定义了事务的操作, 主要是commit(), rollback()
事务管理器有很多实现类: 一种数据库的访问技术有一个实现类。 由实现类具体完成事务的提交,回顾。
意味着: jdbc或者mybatis访问数据库有自己的事务管理器实现类 : DataSourc