声明式事务管理
声明式事务管理方法使您可以借助配置而不是在源代码中进行硬编码来管理事务。这意味着您可以将事务管理与业务代码分开。您仅使用注解或基于XML的配置来管理事务。Bean配置将指定要进行事务处理的方法。这是与声明式事务相关联的步骤
- 我们使用<tx:advice />标记,该标记创建一个事务处理建议,同时定义一个切入点,该切入点与希望进行事务处理的所有方法匹配,并引用该事务处理建议。
- 如果事务配置中已包含方法名称,则创建的建议将在调用该方法之前开始事务。
- 目标方法将在try/catch块中执行。
- 如果该方法正常完成,则AOP建议将成功提交事务,否则将执行回滚。
让我们看看上述步骤如何工作,但是在开始之前,重要的是至少要有两个数据库表,我们可以在这些数据库表上借助事务来执行各种CRUD操作。让我们来看看一个Student表,该表可以在MySQL TEST数据库中使用以下DDL创建-
第二个表是Marks,我们将维护基于多年的学生痕迹。这里SID是学生表的ID。
现在,让我们编写我们的Spring JDBC应用程序,它将在Student和Marks表上实现简单的操作。让我们拥有一个运行良好的Eclipse IDE,并采取以下步骤来创建一个Spring应用程序:
- 创建一个名称为SpringExample的项目,并在创建的项目的src文件夹下创建一个包com.jc2182。
- 使用“添加外部JAR”选项添加所需的Spring库,如“Spring Hello World示例”一章中所述。
- 在项目中添加特定于Spring JDBC的最新库mysql-connector-java.jar,aopalliance-x.y.jar(x.y为版本号自行下载最新的),org.springframework.jdbc.jar和 org.springframework.transaction.jar。如果尚未下载所需的库,则可以下载它们。
- 创建DAO界面StudentDAO并列出所有必需的方法。尽管这不是必需的,并且您可以直接编写StudentJDBCTemplate类,但是作为一个好习惯,让我们开始吧。
- 在com.jc2182包下创建其他所需的Java类StudentMarks,StudentMarksMapper,StudentJDBCTemplate和MainApp。
- 确保您已经在test数据库中创建了Student和Marks表。另外,请确保您的MySQL服务器运行正常,并使用用户名和密码对数据库具有读/写访问权限。
- 在src文件夹下创建Beans配置文件Beans.xml。
- 最后一步是创建所有Java文件和Bean配置文件的内容,然后按以下说明运行应用程序。
以下是数据访问对象接口文件StudentDAO.java的内容
以下是StudentMarks.java文件的内容
以下是StudentMarksMapper.java文件的内容
以下是已定义的DAO接口StudentDAO的实现类文件StudentJDBCTemplate.java
现在,让我们移动主应用程序文件MainApp.java,如下所示-
以下是配置文件Beans.xml
完成创建源和Bean配置文件后,让我们运行该应用程序。如果您的应用程序一切正常,它将打印以下异常。在这种情况下,事务将回滚,并且不会在数据库表中创建任何记录。
您可以在删除模拟异常后尝试上面的示例,在这种情况下,它应该提交事务,并且您应该在数据库中看到相应的记录。