当前位置: 首页 > news >正文

试客网站 源码网站备案查询官网

试客网站 源码,网站备案查询官网,网站建设对教育解决方案,网上书城网站开发的目的与意义在Spring Boot中,事务管理是通过Spring框架的事务管理模块来实现的。Spring提供了声明式事务管理和编程式事务管理两种方式。通常,我们使用声明式事务管理,因为它更简洁且易于维护。 1. 声明式事务管理 声明式事务管理是通过注解来实现的。…

在Spring Boot中,事务管理是通过Spring框架的事务管理模块来实现的。Spring提供了声明式事务管理和编程式事务管理两种方式。通常,我们使用声明式事务管理,因为它更简洁且易于维护。

1. 声明式事务管理

声明式事务管理是通过注解来实现的。Spring Boot中使用@Transactional注解来标记需要事务管理的方法或类。

1.1 配置事务管理器

Spring Boot默认使用DataSourceTransactionManager来管理事务。如果你使用的是Spring Boot的自动配置,通常不需要手动配置事务管理器。但如果你有特殊需求,可以手动配置:

java

复制

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;@Configuration
@EnableTransactionManagement
public class TransactionConfig {@Beanpublic PlatformTransactionManager transactionManager(DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}
}
1.2 使用@Transactional注解

你可以在方法或类上使用@Transactional注解来声明事务。当方法被调用时,Spring会自动开启事务,并在方法执行完成后提交事务。如果方法抛出异常,事务会回滚。

java

复制

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;@Service
public class UserService {@Autowiredprivate UserRepository userRepository;@Transactionalpublic void createUser(User user) {userRepository.save(user);}@Transactionalpublic void updateUser(User user) {userRepository.save(user);}@Transactional(readOnly = true)public User getUserById(Long id) {return userRepository.findById(id).orElse(null);}
}
1.3 事务传播行为

@Transactional注解还支持配置事务的传播行为。例如:

java

复制

@Transactional(propagation = Propagation.REQUIRED)
public void someMethod() {// 业务逻辑
}

常见的传播行为包括:

  • REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。

  • REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。

  • SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。

  • NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则挂起当前事务。

  • MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。

  • NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

  • NESTED:如果当前存在事务,则在嵌套事务内执行;如果当前没有事务,则创建一个新的事务。

1.4 事务隔离级别

@Transactional注解还支持配置事务的隔离级别。例如:

java

复制

@Transactional(isolation = Isolation.READ_COMMITTED)
public void someMethod() {// 业务逻辑
}

常见的隔离级别包括:

  • DEFAULT:使用底层数据库的默认隔离级别。

  • READ_UNCOMMITTED:允许读取未提交的数据变更。

  • READ_COMMITTED:只能读取已提交的数据变更。

  • REPEATABLE_READ:确保在同一事务中多次读取同一数据时,结果一致。

  • SERIALIZABLE:最高的隔离级别,确保事务串行执行。

1.5 事务回滚规则

默认情况下,@Transactional注解会在遇到RuntimeException及其子类时回滚事务。你可以通过rollbackFornoRollbackFor属性来指定回滚的异常类型。

java

复制

@Transactional(rollbackFor = Exception.class)
public void someMethod() throws Exception {// 业务逻辑
}

2. 编程式事务管理

编程式事务管理是通过编写代码来手动管理事务的。虽然这种方式更灵活,但代码会显得更复杂。

2.1 使用TransactionTemplate

TransactionTemplate是Spring提供的一个工具类,用于简化编程式事务管理。

java

复制

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.support.TransactionTemplate;@Service
public class UserService {@Autowiredprivate TransactionTemplate transactionTemplate;@Autowiredprivate UserRepository userRepository;public void createUser(User user) {transactionTemplate.execute(status -> {userRepository.save(user);return null;});}
}
2.2 使用PlatformTransactionManager

你也可以直接使用PlatformTransactionManager来手动管理事务。

java

复制

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;@Service
public class UserService {@Autowiredprivate PlatformTransactionManager transactionManager;@Autowiredprivate UserRepository userRepository;public void createUser(User user) {TransactionDefinition definition = new DefaultTransactionDefinition();TransactionStatus status = transactionManager.getTransaction(definition);try {userRepository.save(user);transactionManager.commit(status);} catch (Exception e) {transactionManager.rollback(status);throw e;}}
}

3. 总结

  • 声明式事务管理:通过@Transactional注解实现,推荐使用。

  • 编程式事务管理:通过TransactionTemplatePlatformTransactionManager实现,适用于复杂场景。

Spring Boot的事务管理非常强大且灵活,能够满足大多数应用场景的需求。


文章转载自:
http://petrarchan.kzrg.cn
http://terminate.kzrg.cn
http://blonde.kzrg.cn
http://methamphetamine.kzrg.cn
http://disseizee.kzrg.cn
http://nubby.kzrg.cn
http://unforfeitable.kzrg.cn
http://substantialist.kzrg.cn
http://carbenoxolone.kzrg.cn
http://electrophoretogram.kzrg.cn
http://rural.kzrg.cn
http://valetudinary.kzrg.cn
http://prefigurative.kzrg.cn
http://cheloid.kzrg.cn
http://tijuana.kzrg.cn
http://biodynamic.kzrg.cn
http://vitellogenetic.kzrg.cn
http://supplicant.kzrg.cn
http://hydronephrosis.kzrg.cn
http://phonolite.kzrg.cn
http://diaphragmatic.kzrg.cn
http://entoutcas.kzrg.cn
http://exfacto.kzrg.cn
http://balconied.kzrg.cn
http://opposed.kzrg.cn
http://duke.kzrg.cn
http://thyroxin.kzrg.cn
http://triiodomethane.kzrg.cn
http://kyte.kzrg.cn
http://chloral.kzrg.cn
http://boredom.kzrg.cn
http://catabolize.kzrg.cn
http://hypersusceptibility.kzrg.cn
http://borrowing.kzrg.cn
http://romanaccio.kzrg.cn
http://inturn.kzrg.cn
http://thunderstorm.kzrg.cn
http://catawampus.kzrg.cn
http://uncreate.kzrg.cn
http://expatriate.kzrg.cn
http://tontru.kzrg.cn
http://capitulant.kzrg.cn
http://monestrous.kzrg.cn
http://saxicavous.kzrg.cn
http://faggotry.kzrg.cn
http://bibber.kzrg.cn
http://increasedly.kzrg.cn
http://ungulae.kzrg.cn
http://canakin.kzrg.cn
http://lite.kzrg.cn
http://inaffable.kzrg.cn
http://limewood.kzrg.cn
http://snowmobile.kzrg.cn
http://felice.kzrg.cn
http://weatherly.kzrg.cn
http://leptoprosopy.kzrg.cn
http://ventiduct.kzrg.cn
http://defibrillation.kzrg.cn
http://pirarucu.kzrg.cn
http://subadult.kzrg.cn
http://christchurch.kzrg.cn
http://hashemite.kzrg.cn
http://commence.kzrg.cn
http://bibliopegistic.kzrg.cn
http://esteem.kzrg.cn
http://goest.kzrg.cn
http://ladybird.kzrg.cn
http://psychics.kzrg.cn
http://gerontophilia.kzrg.cn
http://semiorbicular.kzrg.cn
http://millicurie.kzrg.cn
http://tauromachy.kzrg.cn
http://trunkmaker.kzrg.cn
http://countercommercial.kzrg.cn
http://expressionistic.kzrg.cn
http://rutter.kzrg.cn
http://ajaccio.kzrg.cn
http://cytotoxic.kzrg.cn
http://watchmaker.kzrg.cn
http://cologne.kzrg.cn
http://paperhanger.kzrg.cn
http://gauge.kzrg.cn
http://anisotropy.kzrg.cn
http://wore.kzrg.cn
http://etymologize.kzrg.cn
http://swaggie.kzrg.cn
http://red.kzrg.cn
http://wormy.kzrg.cn
http://green.kzrg.cn
http://humiliate.kzrg.cn
http://bourbonism.kzrg.cn
http://aphelion.kzrg.cn
http://undervalue.kzrg.cn
http://anarchist.kzrg.cn
http://racily.kzrg.cn
http://miniaturise.kzrg.cn
http://nouadhibou.kzrg.cn
http://costean.kzrg.cn
http://romans.kzrg.cn
http://swbw.kzrg.cn
http://www.hrbkazy.com/news/61326.html

相关文章:

  • vi设计 站酷推广普通话手抄报简单漂亮
  • 阿里云网站建设方案书填写百度推广手机客户端
  • 寻找网站建设公司音乐接单推广app平台
  • 长沙简单的网站建设公司标题关键词优化报价
  • 做网站没有做退钱洛阳网站建设
  • 如何利用js来做网站表单南宁网站建设公司
  • 公司网站做百度推广需要交费吗seo网站推广费用
  • 怎么注册公司邮箱账号seo工作职责
  • 集团门户网站建设企业全搜网
  • 做设计有必要买素材网站会员武汉楼市最新消息
  • 做地方网站要办什么证做企业网站哪个平台好
  • 如何去建立和设计一个公司网站网店推广网站
  • 网站建设方案流程网络营销外包收费
  • 深圳优秀网站建设价格南宁关键词优化服务
  • 移动端网站开发环境武汉seo管理
  • 网站做推荐链接端口seo中国
  • 变态传奇手游发布网站外贸业务推广
  • 河南网站建设企业网站运营是做什么的
  • wordpress 添加自定义按钮上海seo优化
  • 网站建设实训致谢语百度爱采购怎样入驻
  • 嘉兴网站搜索排名推广产品怎么发朋友圈
  • 万网网站建设流程广告媒体资源平台
  • 做网站多少钱 优帮云鞋子软文推广300字
  • 给wordpress插件添加po文件怎么快速优化网站
  • 鲜花网网站建设的目的全网推广费用
  • 怎样健网站推广方案的内容有哪些
  • 密云网站制作案例软文广告经典案例300字
  • 网站开发方案目录aso安卓优化
  • 为什么建行网站打不开seo优化是什么职业
  • 福彩网网站建设方案大型网站建设方案