在上一篇Spring框架基础(三)代理和AOP中,我们介绍了代理以及AOP概念。其中我们以事务举例,自己写了一个切面类,模拟开启事物,关闭事物等操作。Spring作为一个优秀开源的框架,为我们提供好了相应的组件。介绍Spring事务管理之前,我们先介绍另一个组件--JDBCTemplate。
上篇中,我们在将保存对象到数据库中,还需要自己写很多代码,如下
这里有两个小地方可以优化
1)获取数据库连接,我们可以使用C3p0连接池
我们需要在Spring的核心配置文件中加入如下配置
优化后,保存对象的代码简化为
这里直接从连接池中获取连接,但是还有很多重复的代码需要我们写
2)使用jdbcTemplate优化重复代码
同样在Spring的核心配置文件中配置,并注入数据源对象,如下
优化后的代码如下
这里调用了jdbcTemplate的update();关于jdbcTemplate的其他方法就不一一介绍了
至此,我们已经优化完操作数据库部分,接下来我们介绍Spring对事务的支持
一个业务功能是否执行成功,调用的service必须执行成功的,意味着service中调用的所有dao操作都是成功的
所以事务应该在Service层统一控制
接下来我们采用两种方式实现事务管理:XML配置方式和注解方式
1)XML配置方式
首先我们需要导入Spring支持事务的jar包
然后需要在Spring的核心配置文件中引入tx名称空间,如下
我们可以看到,配置分为三块
第一步,将事务管理器类加入容器中
第二步,配置事务增强。也就是说,对于拦截到的方法,是只读的还是读写的
第三步,通过切入点表达式指定需要拦截哪些方法
至此,当我们调用DeptService的save方法时,会自动开启相应的事务
2)注解方式
同样需要在Spring的核心配置文件中加入以下配置
然后直接在需要添加事务的Service类上加@Transactional注解即可
本文主要介绍了JDBCTemplate组件,用于优化数据库操作
其次,介绍了Spring对事务的支持,简单演示了通过XML配置和注解方式是如何实现事务管理的