
# 1 简介
平台系统支持四种事务传递类型:
1. **SUPPORTS**
如果当前存在一个事务,则支持当前事务,如果没有事务则不开启。
2. **REQUIRED**
如果当前存在一个事务,则支持当前事务,如果没有事务则开启。
3. **REQUIRES_NEW**
总是开启一个新的事务。如果一个事务存在,则将当前存在的事务挂起。
4. **NOT_SUPPORTED**
总是非事务地执行,并挂起任何存在的事务。
若当前不存在事务,则默认为NOT_SUPPORTED类型,每个API的调用为独立事务(每次调用自动提交,发生错误自动回滚)。
# 2 应用场景
在需要事务的各个场景都适用。
# 3 接口说明
数据库事务相关接口定义和实现存在于bos-dbengine-1.0.jar中。对于使用者来说只需要调用kd.bos.db.tx.TX类中的方法和kd.bos.db.tx.TXHandle对象的markRollback方法即可。
## 3.1 接口列表
| 方法 | 说明 |
| - | - |
| notSupported | 开启NOT_SUPPORTED类型事务 |
| required | 开启REQUIRED类型事务 |
| requiresNew | 开启REQUIRES_NEW类型事务 |
| getPropagation | 获取当前事务类型 |
| markRollback | 事务回滚 |
## 3.2 接口详情
### notSupported
+ **功能描述**
开启NOT_SUPPORTED类型事务。
+ **方法**
```java
public static TXHandle notSupported()
public static TXHandle notSupported(String tag)
```
+ **参数说明**
| 参数 | 类型 | 说明 |
| - | - | - |
| tag | String | 事务标签 |
+ **返回值**
事务处理对象TXHandle。
+ **示例代码**
```java
try (TXHandle h = TX.notSupported("fi_voucher_submit")) {
try {
// 无事务的执行
}
}
```
### required
+ **功能描述**
开启REQUIRED类型事务。
+ **方法**
```java
public static TXHandle required()
public static TXHandle required(String tag)
```
+ **参数说明**
| 参数 | 类型 | 说明 |
| - | - | - |
| tag | String | 事务标签 |
+ **返回值**
事务处理对象TXHandle。
+ **示例代码**
```java
try (TXHandle h = TX.required("fi_voucher_submit")) {
try {
// ...
} catch (Throwable e) {
h.markRollback();
throw e;
}
}
```
***所有SQL异常,在DB里已经标识当前事务为markRollback,在事务结束时执行rollback。但是业务异常,用户应自行设置是否要rollback (markRollback)。***
### requiresNew
+ **功能描述**
开启REQUIRES_NEW类型事务。
+ **方法**
```java
public static TXHandle requiresNew()
public s