事务与保存点
事务:事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
一组操作要么同时执行,要么同时不执行,如转账。
事务保存点的设置

Connection conn=null;
Savepoint savepoint =null;//保存点
try{
//1.获得链接
conn=~~~~;
//2.开启事务
conn.setAutoCommit(false);
A,B
savepoint = conn.setSavepoint();
C,D
//3.事务提交
conn.commit();
}catch(e){
if(savepoint != null){
conn.rollback(savepoint);//C,D异常
conn.commit();//提交AB
}else{conn.rollback();}
}
Spring事务管理的接口
事
务
管
理
的
接
口
{
T
r
a
n
s
a
c
t
i
o
n
D
e
f
i
n
i
t
i
o
n
(
事
务
的
定
义
,
属
性
,
详
情
)
T
r
a
n
s
a
c
t
i
o
n
S
t
a
t
u
s
(
事
务
的
状
态
)
P
l
a
t
f
o
r
m
T
r
a
n
s
a
c
t
i
o
n
M
a
n
a
g
e
(
平
台
事
务
管
理
器
)
\mathrm{事务管理的接口}\left\{\begin{array}{l}TransactionDefinition(事务的定义,属性,详情)\\TransactionStatus(事务的状态)\\PlatformTransactionManage(平台事务管理器)\end{array}\right.
事务管理的接口⎩⎨⎧TransactionDefinition(事务的定义,属性,详情)TransactionStatus(事务的状态)PlatformTransactionManage(平台事务管理器)
事
务
管
理
的
j
a
r
包
(
W
E
N
−
I
N
F
/
l
i
b
)
{
s
p
r
i
n
g
−
t
x
−
3.2.0.
R
E
L
E
S
A
3
E
.
j
a
r
P
l
a
t
f
o
r
m
T
r
a
n
s
a
c
t
i
o
n
M
a
n
a
g
e
{
s
p
r
i
n
g
−
j
d
b
c
−
3.2.0.
R
E
L
E
A
S
E
.
j
a
r
s
p
r
i
n
g
−
o
r
m
−
3.2.0.
R
E
L
E
A
S
E
.
j
a
r
\begin{array}{c}\mathrm{事务管理的}jar包\\(WEN-INF/lib)\end{array}\left\{\begin{array}{l}spring-tx-3.2.0.RELESA3E.jar\\PlatformTransactionManage\left\{\begin{array}{l}spring-jdbc-3.2.0.RELEASE.jar\\spring-orm-3.2.0.RELEASE.jar\end{array}\right.\end{array}\right.
事务管理的jar包(WEN−INF/lib)⎩⎨⎧spring−tx−3.2.0.RELESA3E.jarPlatformTransactionManage{spring−jdbc−3.2.0.RELEASE.jarspring−orm−3.2.0.RELEASE.jar
| TransactionDefinition事务详情的方法有: | 描述 |
|---|---|
| ①getPropagarionBehavior():int | 传播行为(两个业务之间如何共享事务) |
| ②getIsolationLevel():int | 隔离级别 |
| ③getTimeout():int | 获得超时时间 |
| ④isReadOnly:boolean | 是否只读 |
| ⑤getName():String | 配置事务详情名称(一般方法名称如add,save等) |
| ①getPropagarionBehavior传播行为(两个业务之间如何共享事务)的参数有7个 ,比较重要的加* | 解释 |
|---|---|
| TransactionDefinition.PROPAGATION_REQUIRED* | 当前如果有事务,Spring就会使用该事务;否则会开始一个新事务 |
| TransactionDefinition.PROPAGATION_SUPPORTS | 当前如果有事务,Spring就会使用该事务;否则不会开始一个新事务 |
| TransactionDefinition.PROPAGATION_MANDATORY | 当前如果有事务,Spring就会使用该事务;否则会抛出异常 |
| TransactionDefinition.PROPAGATION_REQUIRES_NEW* | Spring总是开始一个新事务。如果当前有事务,则该事务挂起 |
| TransactionDefinition.PROPAGATION_NOT_SUPPORTED | Spring不会执行事务中的代码。代码总是在非事务环境下执行,如果当前有事务,则该事务挂起 |
| TransactionDefinition. PROPAGATION_NEVER | 即使当前有事务,Spring也会在非事务环境下执行。如果当前有事务,则抛出异常 |
| TransactionDefinition. PROPAGATION_NESTED | 如果当前有事务,则在嵌套事务中执行。如果没有,开始一个新事务.事务A和B底层采用保存点机制,形成事务的嵌套 |
本文介绍了数据库事务的概念,强调了事务的原子性,通过一个示例展示了如何使用保存点进行事务管理。同时,提到了Spring框架中的事务管理接口,包括TransactionDefinition和TransactionStatus,并详细解释了TransactionDefinition中的传播行为及其应用场景。此外,还提及了事务管理所需的jar包。
903

被折叠的 条评论
为什么被折叠?



