您的位置:首页 > 文旅 > 旅游 > 做app一般多少钱_百度广告投放价格_线上推广方案_品牌策略

做app一般多少钱_百度广告投放价格_线上推广方案_品牌策略

2025/4/20 22:51:30 来源:https://blog.csdn.net/jj666mhhh/article/details/143991926  浏览:    关键词:做app一般多少钱_百度广告投放价格_线上推广方案_品牌策略
做app一般多少钱_百度广告投放价格_线上推广方案_品牌策略

博主主页: 码农派大星.

    数据结构专栏:Java数据结构

 数据库专栏:数据库

JavaEE专栏:JavaEE

软件测试专栏:软件测试

关注博主带你了解更多知识

目录

1.事务

1.1 什么是事务?

1.2 为什么需要事务?

1.3 事务的操作 

2. Spring 中的事务

1. 编程式事务

2. 声明式事务@Transactional

1. 添加依赖

2. 在需要事务的⽅法上添加 @Transactional 注解就可以实现

@Transactional 作⽤

@Transactional 详解

rollbackFor

​编辑

3. Spring事务隔离级别

4. Spring 事务传播机制 

4.1 什么是事务传播机制

4.2 事务的传播机制种类 

总结


1.事务

1.1 什么是事务?

事务会把所有的操作作为⼀个整体,⼀起向数据库提交或者是撤销操作请求.所以这组操作要么同时成 功,要么同时失败

1.2 为什么需要事务?

程序开发时,也会有事务的需求

⽐如转账操作:

第⼀步:A账⼾-100元.

第⼆步:B账⼾+100元

如果没有事务,第⼀步执⾏成功了,第⼆步执⾏失败了,那么A账⼾的100元就平⽩⽆故消失了.如果使 ⽤事务就可以解决这个问题,让这⼀组操作要么⼀起成功,要么⼀起失败

1.3 事务的操作 

事务的操作主要有三步:

1. 开启事starttransaction/begin(⼀组操作前开启事务)

2. 提交事务:commit(这组操作全部成功,提交事务)

3. 回滚事务:rollback(这组操作中间任何⼀个操作出现异常,回滚事务)

-- 开启事务start transaction;-- 提交事务commit;-- 回滚事务rollback;

2. Spring 中的事务

Spring 中的事务操作分为两类:

1. 编程式事务(⼿动写代码操作事务).

2. 声明式事务(利⽤注解⾃动开启和提交事务)

我们先做准备工作

创建实体类:

创建mapper类:

 创建controller类

创建service服务类 

1. 编程式事务

Spring ⼿动操作事务和上⾯MySQL操作事务类似

开启事务(获取事务),提交事务,回滚事务

SpringBoot 内置了两个对象:

DataSourceTransactionManager事务管理器,⽤来获取事务(开启事务),提交或回滚事务

TransactionDefinition 是事务的属性,在获取事务的时候需要将TransactionDefinition 传递进去从⽽获得⼀个事务TransactionStatus

@Slf4j
@RequestMapping("/user")
@RestController
public class UserController {@Autowiredprivate DataSourceTransactionManager transactionManager;//定义事务属性@Autowiredprivate TransactionDefinition transactionDefinition;@Autowiredprivate UserService userService;@RequestMapping("/registry")public Boolean registry(String name, String password){//开启事务TransactionStatus transaction = transactionManager.getTransaction(transactionDefinition);Integer result = userService.insertUser(name,password);log.info("数据影响行数:"+result);//回滚事务transactionManager.rollback(transaction);//提交事务transactionManager.commit(transaction);return true;}}

测试开始事务,提交事务成功: 

2. 声明式事务@Transactional

1. 添加依赖

 <dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId></dependency>

2. 在需要事务的⽅法上添加 @Transactional 注解就可以实现

⽆需⼿动开启事务和提交事务,进⼊⽅法时⾃动开启事务,⽅法执⾏完会⾃动提交事务,如果中途发⽣了没有处理的异常会⾃动回滚事务

@Transactional 作⽤

@Transactional 可以⽤来修饰⽅法或类

修饰⽅法时:只有修饰public⽅法时才⽣效

修饰类时:对@Transactional修饰的类中所有的public⽅法都⽣效

⽅法/类被 @Transactional 注解修饰时,在⽬标⽅法执⾏开始之前,会⾃动开启事务,⽅法执⾏结束之后,⾃动提交事务

如果在⽅法执⾏过程中,出现异常,且异常未被捕获,就进⾏事务回滚操作. 如果异常被程序捕获,⽅法就被认为是成功执⾏,依然会提交事务

@Transactional 详解

@Transactional 注解当中的三个常⻅属性:

1. rollbackFor: 异常回滚属性.指定能够触发事务回滚的异常类型.可以指定多个异常类型

2. Isolation: 事务的隔离级别,默认值为Isolation.DEFAULT 

3.propagation: 事务的传播机制.默认值为 Propagation.REQUIRED

rollbackFor

@Transactional 默认只在遇到运⾏时异常和Error时才会回滚,⾮运⾏时异常不回滚.即 Exception的⼦类中,除了RuntimeException及其⼦类

如果我们需要所有异常都回滚,需要来配置@Transactional 注解当中的 rollbackFor 这个属性指定出现何种异常类型时事务进⾏回滚((rollbackFor = Exception.class)

3. Spring事务隔离级别

4. Spring 事务传播机制 

4.1 什么是事务传播机制

事务传播机制就是:多个事务⽅法存在调⽤关系时,事务是如何在这些⽅法间进⾏传播的

4.2 事务的传播机制种类 

@Transactional 注解⽀持事务传播机制的设置,通过  propagation 属性来指定传播⾏为

Spring 事务传播机制有以下7种:

1. Propagation.REQUIRED :默认的事务传播级别.如果当前存在事务,则加⼊该事务.如果当前没 有事务,则创建⼀个新的事务.

2. Propagation.SUPPORTS :如果当前存在事务,则加⼊该事务.如果当前没有事务,则以⾮事务的 ⽅式继续运⾏.

3. Propagation.MANDATORY :强制性.如果当前存在事务,则加⼊该事务.如果当前没有事务,则 抛出异常.

4. Propagation.REQUIRES_NEW :创建⼀个新的事务.如果当前存在事务,则把当前事务挂起.也 就是说不管外部⽅法是否开启事务, Propagation.REQUIRES_NEW 修饰的内部⽅法都会新开 启⾃⼰的事务,且开启的事务相互独⽴,互不⼲扰.

5. Propagation.NOT_SUPPORTED :以⾮事务⽅式运⾏,如果当前存在事务,则把当前事务挂起(不 ⽤).

6. Propagation.NEVER :以⾮事务⽅式运⾏,如果当前存在事务,则抛出异常

7. Propagation.NESTED :如果当前存在事务,则创建⼀个事务作为当前事务的嵌套事务来运⾏. 如果当前没有事务,则该取值等价于 PROPAGATION_REQUIRED

总结

Spring中使⽤事务,有两种⽅式:编程式事务(⼿动操作)和声明式事务.其中声明式事务使⽤较多,在 ⽅法上添加 @Transactional 就可以实现了

通过 @Transactional(isolation = Isolation.SERIALIZABLE) 设置事务的隔离级别.Spring中的事务隔离级别有5种

通过@Transactional(propagation =Propagation.REQUIRED)设置事务的传播机制,Spring中的事务传播级别有7种,重点关注 REQUIRED (默认值)和 REQUIRES_NEW和NESTED

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com