声明式事务概念

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/83211819

一 Spring的事务机制

所有的数据访问技术都有事务机制,这些技术都提供了API用来开启事务、提交事务来完成数据操作,或者在发生错误的时候回滚数据。

Spring的事务机制是用统一的机制来处理不同数据访问技术的事务处理。Spring的事务机制提供了一个PlatformTransactionManager接口。代码如下:

public interface PlatformTransactionManager {
    TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException;
    void commit(TransactionStatus status) throws TransactionException;
    void rollback(TransactionStatus status) throws TransactionException;
}

不同的数据访问技术的事务使用不同的接口实现,如下图。

在程序中定义事务管理器的伪代码如下:

@Bean
public PlatformTransactionManager transactionManager(){
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setDataSource(dataSource());
    return transactionManager;
}

二 声明式事务

Spring支持声明式事务,即使用注解来选择需要使用事务的方法,它使用@Transactional注解在方法上表明该方法需要事务支持。这是一个基于AOP的实现操作。被注解的方法在被调用时,Spring开启一个新的事务,当方法无异常运行结束后,Spring会提交这个事务。

伪代码如下:

@Transactional
public void savesomething(Long id,String name)
{
    //数据库操作
}

在此需要特别注意的是,此@Transactional注解来自org.springframework.transaction.annotation

Spring提供了一个@EnableTransactionManagement注解在配置类上开启声明式的支持。使用了@EnableTransactionManagement后,Spring容器会自动扫描@Transactional的方法和类。

@EnableTransactionManagement的使用方式如下:

@EnableTransactionManagement
public class AppConfig
{
}

三 参考

https://blog.csdn.net/zhangzhihuaniubi/article/details/82455122

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/83211819
今日推荐