# spring-aop **Repository Path**: zhangyanghao/spring-aop ## Basic Information - **Project Name**: spring-aop - **Description**: spring aop连接oracle数据库 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-06-08 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### Spring AOP 事务管理 #### JDBC事务管理的痛点 事务管理是应用开发中不能回避的一个重要问题。那么我们如何在JDBC中使用事务 处理呢?也就是让 JDBC 把多条 SQL 语句当成一个事务来处理。通过 DriverManager 对 象获取到 Connection 对象之后,Connection 对象处于自动提交模式下, 这意味着它在执行每个语句后都会自动提交。 ``` //刚获取到的connection处于自动提交模式 Connection conn=DriverManager.getConnection(...); ``` 如果需要用JDBC进行事务管理,需要做的工作是: ``` Connection conn=DriverManager.getConnection(...); conn.setAutoCommit(false); ... 业务代码 conn.commit();//提交事务 ``` 如果禁用自动提交模式,为了提交更改,必须显式调用commit 方法;否则无法保存数据库更改。 在 jdbc 中事务控制是靠 Connection 来进行的,并且要求同一个事务中所有的操作 都要使用同一个连接。而且事务控制应该在业务层中进行。 为了进行事务控制,业务层中必须要使用 Connection,而 DAO 也要使用 Connection,也就是要将 Connection 对象在各个层次之间传递,这样破坏了 三层结构的基本原则.利用 Spring 的 AOP,可以将事务管理的代码 “分离”出来。 ### 使用Spring进行事务控制-准备工作 - 引入spring-context - 引入spring-aop - 引入spring-tx 事务控制 - 引入spring-jdbc - 引入oracle jdbc驱动包 - 引入commons-dbcp 连接池 - 在oracle中创建表 - aspectjweaver ``` create table TX_TEST ( title VARCHAR2(30), name VARCHAR2(30) ) ``` - 定义dao接口并实现 ``` public interface TransactionTestDAO { public void save(String title,String name); } ``` ### 使用Spring进行事务控制-在配置文件中配置 - 配置数据源 - 自动扫描 - 配置事务管理器,这个事务管理器 ``` ``` - 配置事务管理的advice ``` ``` - 配置切面 ``` ``` ### 使用Spring进行事务控制-使用annotation