并发锁事务重试机制(JPA高并发下的乐观锁异常)

本文介绍了在Java JPA高并发场景下遇到的乐观锁异常,如StaleObjectStateException和ObjectOptimisticLockingFailureException,并提出了一种解决方案——通过Aspectj拦截器实现异常时的重试机制。文中详细阐述了如何定义切面接口、标记需要重试的方法以及实现切面拦截器,确保在新的事务中重试操作,直至达到重试上限。同时,文章也提及了AOP和Spring事务管理的相关知识。
摘要由CSDN通过智能技术生成

 

        我的博文中,有一篇短文Java结合Junit做并发测试用例,是介绍JPA在高并发下,多个Service方法更新

同一个记录;在异常信息中有StaleObjectStateException和ObjectOptimisticLockingFailureException异常信

息。有些业务这种靠JPA维护的版本信息是可行的,如果两个不同用户同事(高并发)购买一件马丁靴鞋子,最后会更新该马丁靴在库数量,如果没有重试机制,肯定只有一个用户购买失败;可能这没有什么,用户再次提交购买就ok了;可是作为事逼可能成就人生的工程师,你一定不能容忍,于是有了重试机制。

 

1:解决方案

     定义Aspectj拦截器,指定方法发生乐观锁异常时,进行重试。

 

2:show coding.

 

(1) 因为不是所有方法发生乐观锁异常都是需要重试机制的,所以需要先定义切面接口定义IsTryAgain


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值