原生事物实现方式
// 1.获取链接Connection conn = DriverManager.getConnection("xxx");// 2.手动提交conn.setAutoCommit(false);// 3.执行sqlPreparedStatement st = conn.prepareStatement("sql");st.execute();// 4.提交 or 回滚conn.commit();conn.rollback();
spring事物核心API
1.PlatformTransactionManager
事物管理器-定义了事物的基本操作:开启事物、提交事物、回滚事物
AbstractPlatformTransactionManager,规定了事务管理器的基本框架,仅将依赖于具体平台的特性作为抽象方法留给子类实现
2.TransactionStatus
事物状态、保存点
3.TransactionDefinition
事物隔离级别和事物传播级别
Spring事物实现方式
声明式事物
基于注解:Transactional
@Transactionalpublic void service() throws Exception {// TODO: 业务代码}
编程式事物
事物模板类:TransactionTemplate
核心原理同原生
TransactionTemplate transactionTemplate =new TransactionTemplate(new DataSourceTransactionManager(new DruidDataSource()));transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);transactionTemplate.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);Object object = transactionTemplate.execute(status -> {// TODO: 业务代码return null;});
声明式事物原理
声明式事务: 建立在AOP之上的,其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明即可。
Transactional注解解释
spring创建事物代理类的过程
https://blog.csdn.net/weixin_37689658/article/details/118766462
https://blog.csdn.net/qq_37469055/article/details/106712993
https://louyuting.blog.csdn.net/article/details/78118619
