手机网站开发方式,毕设做网站心得体验,有什么网站是做投资的,提供网站建设备案事务管理
事务管理在系统开发中是不可缺少的一部分#xff0c;Spring提供了很好的事务管理机制#xff0c;主要分为编程式事务和声明式事务两种。
编程式事务#xff1a; 是指在代码中手动的管理事务的提交、回滚等操作#xff0c;代码侵入比较强。
声明式事务#xff…事务管理
事务管理在系统开发中是不可缺少的一部分Spring提供了很好的事务管理机制主要分为编程式事务和声明式事务两种。
编程式事务 是指在代码中手动的管理事务的提交、回滚等操作代码侵入比较强。
声明式事务 基于AOP面向切面的它将具体业务与事务处理部分解耦代码侵入性很低所以在实际开发中声明式事务比较多。声明式事务有两种实现方式分别式基于TX和AOP的xml配置文件方式第二种就是基于 Transactional注解。
可以用在哪些地方
Transactional可以用在接口、类、类方法 作用于类当把Transactional注解放在类上时表示所有该类的 public 方法都配置相同的事务属性信息。 作用于方法当类配置了Transactional方法也配置了Transactional方法的事务会覆盖类的事务配置信息。 作用于接口不推荐这种使用方法因为一旦标注在 Interface 上并配置了 Spring AOP 使用 CGLib 动态代理将会导致 Transactional 注解失效。
Transactional 注解参数说明
参数功能readOnly该属性用于设置当前事务是否为只读事务设置为true表示只读false表示可读写默认为false。例如Transactional(readOnlytrue)rollbackFor该属性用于设置需要进行回滚的异常类数组当方法中抛出指定异常时则进行事务回滚。例如指定单一异常类Transactional(rollbackForRuntimeException.class)也可以指定多个异常类默认是RuntimeException和ErrorrollbackForClassName该属性用于设置需要进行回滚的异常类名称数组当方法抛出指定异常名称的异常时则进行事务回滚。例如指定单一异常类名称Transactional(rollbackForClassName“RuntimeException”)指定多个Transactional(rollbackForClassName{“RuntimeException”,“Exception”})noRollbackFor该属性用于设置不需要进行回滚的异常类数组当方法中抛出指定异常数组中的异常时不进行事务回滚。例如指定单一异常类 Transactional(noRollbackForRuntimeException.class) 指定多个Transactional(noRollbackFor{RuntimeException.class, Exception.class})noRollbackForClassName该属性用于设置不需要进行回滚的异常类名称数组。propagation该属性用于设置事务的传播行为例如Transactional(propagationPropagation.NOT_SUPPORTED)timeout该属性用于设置事务的超时秒数默认值为-1表示永不超时isolation该属性用于设置底层数据库的事务隔离级别事务隔离界别用于处理多事务并发情况通常使用数据库默认的隔离级别即可。
注意事项以及失效情况 Transactional 应用在非 public 修饰的方法上 Transactional 注解属性 propagation 设置错误配置以下三种 propagation事务将不会发生回滚。 PROPAGATION_SUPPORTS如果当前存在事务则加入该事务如果当前没有事务则以非事务的方式继续运行。 PROPAGATION_NOT_SUPPORTED以非事务方式运行如果当前存在事务则把当前事务挂起。 PROPAGATION_NEVER以非事务方式运行如果当前存在事务则抛出异常。 Transactional 注解属性 rollbackFor 设置错误 同一个类中方法调用导致Transactional失效 异常被catch吞掉导致失效 数据库引擎不支持事务