# 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