1.Spring的事务提交回滚
(1).运行期抛出的异常,spring会将事务回滚也就是(uncheck的异常)
Check的异常将不会进行回滚。
unchecked异常指:运行期间(RuntimeException)抛出的异常,比如空指针异常,参数不合法异常等。
checked异常指:在编写代码时,预先已经知道此方法有可能会抛异常,将异常信息抛了出去,在对应的调用此方法时必须写try{}catch{}的,这样spring将不会回滚事务。
代码体现
在PersonServiceImpl.java中delete方法中抛出异常:
但是测试类中调用delete方法是没有进行异常处理
那么数据库中的记录将不会删除,因为spring将事务回滚了。这就是unchecked
当PersonserviceImpl中的delete方法这样写时(把异常信息抛出去了):
在测试方法中必须要进行try{}catch{}如下:
这时将不会将事务进行回滚,数据库中的数据将会被删除,也就是所说的checkd
还可以在方法上配置注解属性,将抛出unchecked的异常时(原本是回滚的),事务不回滚,抛出checked的异常时(原本是不回滚的),事务回滚。如下:
如果想让一个方法在执行时,不开启事务,那么可以进行如下配置:
其中配置的属性Propagation的值还有如下几个:
@Transactional(readOnly=true)//配置事务的只读操作,这样的话将只有读数据的功能,没有更新数据的功能,在查询方法上设置事务的此属性,可以提高效率。
@Transactional(timeout=30)//事务的超时时间,默认30秒
@Transactional(isolation=???)//配置事务的隔离级别,这个一般是数据库自己设置的。隔离级别有如下几种:
实现可重复读一般数据库采用快照技术,快照技术就是:可以想象成,当在某一点,访问数据时,将这个数据做成镜像,那么以后在同一个事务中读取相同记录的数据时,它就可以从快照里面返回数据,这时不管外部的事务对其进行任何操作,在多次读取的时候将不会受到影响。
2.基于xml配置的方式配置事务
(1).在bean.xml文件中进行如下配置:
网友评论