spring声明式事务管理与配置详解

前沿:通过对spring事务管理有了比较深入学习,本文将不做实例,而是指定具体的类和配置文件进行讲解。

本文内容:

1、了解什么是声明式事务?

2、声明式事务管理分别有哪几种?

3、这几种事务管理之间的区别是什么?

 

一、什么是声明式事务?

声明式事务(declarative transaction management)是Spring提供的对程序事务管理的方式之一。

Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,就是指在配置文件中声明。用在Spring配置文件中声明式的处理事务来代替代码式的处理事务。这样的好处是,事务管理不侵入开发的组件,具体来说,业务逻辑对象就不会意识到正在事务管理之中,事实上也应该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改变事务管理策划的话,也只需要在定义文件中重新配置即可;在不需要事务管理的时候,只要在设定文件上修改一下,即可移去事务管理服务,无需改变代码重新编译,这样维护起来极其方便
 
二、声明式事务管理方式。
首先在还没说声明式事务管理方式之前先看看原始的事务管理,

由上图可以看出,首先我们需要建立一个新的session.openSession(),其次通过session的getTransaction().begin()方法getTransaction().commit()方法进行事务创建和事务提交,并且需要关闭session.close(),这样一来我们每次调用这个方法都会重新创建一个新的session,都要反复的做一样的事情,这样就不符合我们的软件工程设计思想,接下来我们使用声明式事务管理方式进行对代码的简化和调整。

1、使用springAOP声明式事务管理。

 1.1、我们需要导入aop的几个包:

1.2、然后在application.xml配置文件中进行事务配置:

 1.3、将查询所有数据那个方法进行修改:

经过上面讲解,我们可以看得出对showAllNews()方法的修改,首先我们将原来的openSession()方法改为了getCurrentSession()方法(注:截图有注释说明他们的区别,我就不再重复),并且不需要再手动去创建事务和提交事务,我们的springAOP会自动对事务进行管理、自动的关闭session。

 

2、使用@Transactional注解方式。

 2.1、首先我们需要在application.xml配置文件中进行事务配置(通知Spring容器对注解@Transactional的Bean处理):

 2.2、然后在NewsDaoImpl中不需要做任何的操作和修改:

    2.3、给NewsServiceImpl添加注解。

在这里我们@Transactional注解可以添加到类上(表示所有的方法都加入事务管理),也可以在具体的方法加上注解 @Transactional,如果是不用对数据进行修改的方法要添加一个属性。

比如:查询所有数据的方法 @Transactional(readOnly=true) 

3、使用SpringAOP配置的声明式事务管理跟@Transactional注解的区别:

1)SpringAOP配置声明式事务管理耦合性低,可读性低,表达较详细,灵活性也高。

2)@Transactional注解可读性较高,内容分散不利于统一的管理和维护,耦合性较高。

延伸阅读

一览图书管理系统-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训一览图书管理系统