------------------------------------------------------------
Spring中的事务处理
事务处理是由多个步骤组成,这些步骤之间有一定的逻辑关系,作为一个整体的操作过程,所有的步骤必须同时成功或失败。
1:提交 当所有的操作步骤都被完整执行后,称为该事物被提交。
2:回滚 由于某个操作失败,导致所有的步骤都没被提交则事物必须回滚,回到事物执行前的状态。
事务的特性:
ACID:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durablity)
Spring中的事务处理是基于动态AOP机制的实现。
1:编程式事务处理:
spring 提供的TransactionTemplate能够以编程的方式实现事务控制。创建TransactionTemplate的实例需要提供一个
PlatformTransactionManager的实例
HelloADO.java:
public class HelloADO {
private DataSource dataSource;
private PlatformTransactionManager platformTransactionManager;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void setPlatformTransactionManager(
PlatformTransactionManager platformTransactionManager) {
this.platformTransactionManager = platformTransactionManager;
}
public void create(String msg){
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = platformTransactionManager.getTransaction(def);
try{
JdbcTemplate jt = new JdbcTemplate(dataSource);
jt.update("update login set name='login' where password='password'");
jt.update("delete from login where name='noTransaction'");
/**在下面的语句中产生了错误,所以在脱离事务处理的情况下,其后的语句都不被执行;
* 如果是在事务处理的机制下,只要有一处错误,这个事务就不会被提交!*/
jt.update("insert into login(nadme,password) values('aa','bbbbbb')");
jt.update("update login set name='loverly' where password='qq'");
}catch (Exception e){
platformTransactionManager.rollback(status);
}
finally {
platformTransactionManager.commit(status);
}
}
}
applicationContext.xml
<beans>