事务管理的核心接口
在spring的所有jar包中,包含了一个名为spring-tx-4.3.6.RELEASE的jar包,该包就是spring提供的用于事务管理的依赖包。在其中我们可以找到3个接口文件PlatformTransactionManager,TransactionDefinition和TransactionStatus。
这三个接口文件就是spring事务管理所涉及的③个核心接口。
1:PlatformTransactionManager
接口是spring提供的平台事务管理器,主要用于管理事务。提供了三个事务操作的方法,
TransactionStatus getTransaction(TransactionDefinition definition):用于获取事务状态信息.
viod commit(TransactionStatus status):用于提交事务。
viod rollback(TransactionStatus status):用于回滚事务。
2:TransactionDefinition
TransactionDefinition接口是事务的定义的对象,该对象中定义了事务的规则,并提供了获取事务相关信息的方法。
String getName():获取事务对象名称。
int getlsolationLevel():获取事务的隔离等级。
int getPropagationBehavior():获取事务的传播行为。
int getTimeout():获取事务的超时时间。
boolean isReadOnly():获取事务是否可读。
在事务管理过程中,传播行为可以控制是否要创建事务以及如何创建事务,通常情况下,数据的查询不会影响原数据的改变,所以不需要进行事务管理,而对于数据的插入,更新,删除操作,必须进行事务管理,如果没有指定事务的传播行为,spring默认传播行为是REQUIRED。
TransactionStatus
TransactionStatus接口是事务的状态,它描述了某一时间点上事务的状态信息。该接口中包含了6个方法,具体如下。
void flush():刷新事务。
boolean hasSavepoint():获取是否存在保存点。
boolean isCompleted():获取事务是否完成。
boolean isNewTransaction():获取事务是否是新事务。
boolean isRollbackOnly():获取是否回滚。
void setRollbackOnly():设置事务回滚。
事务管理的方式
spring中的事务管理分为二种方式:一种是传统的编程式事务管理,另一种是声明式事务管理。
编程式事务管理:通过编代码实现事务的管理,包括定义事务的开始,正常执行后的事务提交,异常时的事务回滚。
声明式事务管理:是通过aop技术实现的事务管理,其主要思想是将事务管理作为一个切面代码单独编写,然后通过aop技术将事务管理的切面代码植入到业务目标类中。