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

公司网站管理制度半年工作总结ppt模板

公司网站管理制度,半年工作总结ppt模板,教育机构培训,什么外贸网站做箱包好一、事务基础概念 事务的ACID特性: 原子性(Atomicity):操作要么全部成功,要么全部失败一致性(Consistency):数据在事务前后保持合法状态隔离性(Isolation)&…

一、事务基础概念

事务的ACID特性

  • 原子性(Atomicity):操作要么全部成功,要么全部失败
  • 一致性(Consistency):数据在事务前后保持合法状态
  • 隔离性(Isolation):多个事务并发互不干扰
  • 持久性(Durability):事务提交后数据永久保存

二、Spring Boot事务实战

1. 环境准备

// Maven依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2. 实体类定义

@Entity
public class Account {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String accountNumber;private BigDecimal balance;// 省略getter/setter
}@Entity
public class TransferLog {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String fromAccount;private String toAccount;private BigDecimal amount;// 省略getter/setter
}

3. Service层事务控制

@Service
public class BankService {@Autowiredprivate AccountRepository accountRepository;@Autowiredprivate TransferLogRepository transferLogRepository;// 核心事务方法@Transactional(rollbackFor = Exception.class)public void transferMoney(String fromAccNum, String toAccNum, BigDecimal amount) {// 1. 扣减转出账户Account fromAccount = accountRepository.findByAccountNumber(fromAccNum);fromAccount.setBalance(fromAccount.getBalance().subtract(amount));accountRepository.save(fromAccount);// 模拟异常(测试事务回滚)if(amount.compareTo(BigDecimal.ZERO) < 0) {throw new RuntimeException("转账金额不能为负数");}// 2. 增加转入账户Account toAccount = accountRepository.findByAccountNumber(toAccNum);toAccount.setBalance(toAccount.getBalance().add(amount));accountRepository.save(toAccount);// 3. 记录转账日志TransferLog log = new TransferLog();log.setFromAccount(fromAccNum);log.setToAccount(toAccNum);log.setAmount(amount);transferLogRepository.save(log);}
}

三、关键注解说明

@Transactional 参数解析:

@Transactional(isolation = Isolation.DEFAULT,    // 事务隔离级别propagation = Propagation.REQUIRED, // 传播行为rollbackFor = Exception.class,    // 指定回滚的异常类型timeout = 30                     // 事务超时时间(秒)
)

四、常见事务失效场景

  1. 非public方法@Transactional只能用于public方法
  2. 自调用问题:同一个类中方法A调用方法B(B有事务注解),事务不生效
  3. 异常被捕获:事务方法内捕获异常未重新抛出
  4. 错误异常类型:默认只回滚RuntimeException,需通过rollbackFor指定

五、事务传播机制示例

// 嵌套事务示例
@Transactional(propagation = Propagation.REQUIRED)
public void parentMethod() {// 主事务逻辑childMethod();  // 嵌套子事务
}@Transactional(propagation = Propagation.REQUIRES_NEW)
public void childMethod() {// 独立事务执行// 即使外层事务回滚,此方法仍会提交
}

六、事务验证测试

@SpringBootTest
class TransactionTest {@Autowiredprivate BankService bankService;@Testvoid testTransferSuccess() {// 正常转账测试bankService.transferMoney("A123", "B456", new BigDecimal("100.00"));// 验证账户余额和日志记录}@Testvoid testTransferRollback() {// 测试异常回滚assertThrows(RuntimeException.class, () -> {bankService.transferMoney("A123", "B456", new BigDecimal("-100.00"));});// 验证数据未修改}
}

最佳实践建议

  1. 事务方法尽量放在Service层
  2. 明确指定rollbackFor属性
  3. 避免长事务(复杂操作拆分为多个小事务)
  4. 结合@Transactional与数据库约束保证数据一致性

扩展学习

  • Spring官方文档:Transactions
  • 分布式事务解决方案:Seata、XA协议
  • 事务隔离级别深度解析(脏读/幻读/不可重复读)
http://www.dtcms.com/wzjs/587956.html

相关文章:

  • 移动端网站教程前端网页设计用什么软件
  • 保定网站建设方案外包河南省建设厅职称网站
  • 好的室内设计网站正规的网店平台有哪些
  • 免费推广网站注册入口百度网站官网入口网址
  • 全国做网站找哪家好免费建网站的程序
  • 深圳中小企业网站制作小语种网站怎么设计
  • 个人网站如何建网站的经营推广
  • 网络营销理论包括哪些seo怎么读
  • 建筑工程师的工作内容怎么优化一个网站
  • 郑州网站开发与建设wordpress与drupal对比
  • 关于网站建设的管理实践报告烟台百度网站推广
  • 深圳最专业的高端网站建设西安网站制作网站
  • 网站建设创业书wordpress 用户遍历
  • 网站设计 网站推广 网站优化商洛网站设计
  • 怎么做网站步骤免费的上海网站建设包括哪些
  • 一屏一屏的网站怎么做网站建设与规划方案书
  • 企业为什么建站淘宝网页版怎么和卖家聊天
  • 网站安全管理制度wordpress中文cms主题
  • 如何建设网站兴田德润简介在线旅游网站建设方案
  • 企业网站设计的重要性论坛网站如何备案
  • 网站推广话术网站自动推广软件免费
  • 肇庆有哪家做企业网站的wordpress新增站点
  • 唐山公司建设网站洛阳网络建站公司
  • 服务器创建多个网站南昌所有建设工程网站
  • 企业做网站的用途wordpress 快站
  • 江西网站建设价位天津建设部网站保温
  • 济南济南网站建设网站建设上海市区网站设计制作公司
  • 罗湖商城网站设计多少钱施工企业资质标准
  • 企业做网站都购买域名吗启东做网站
  • 微信小程序开发大赛seo网站设计招聘