Spring事务管理是什么?
在JDBC中是通过Connection对象进行事务管理的,默认是自动提交事务,可以手工将自动提交关闭,通过commit方法进行提交,rollback方法进行回滚,如果不提交,则数据不会真正的插入到数据库中。
Hibernate中是通过Transaction进行事务管理,处理方法与JDBC中类似。
Spring中也有自己的事务管理机制,一般是使用TransactionMananger进行管理,可以通过Spring的注入来完成此功能。
Spring的事务是通过“声明式事务”的方式对事务进行管理,即在配置文件中进行声明,通过AOP将事务切面切入程序。最大的好处是大大减少了代码量,比如:
Transaction tx=session.getTransaction();
session.beginTransaction();
tx.commit();
tx.rollback();
等等这类代码不用在每个方法中重复的去写,简化了程序,提高了工作效率。
下面是个比较形象的例子,我们自己写一个事务的时候会这么写:
try{
// 业务逻辑
if(成功)
commit();
}catch(e){
// 出现异常
rollback();
}
spring会捕获到你往上抛的异常,然后帮你try catch,如果发现捕获到异常,会就把connection不提交,直接回滚,所以我们在配置声明式事务的时候会有一个参数是什么异常类,默认是runtimexcepttion。