java - 隔离 = Isolation.REPEATABLE_READ 是否足以将资金从一个账户转移到另一个账户?
问题描述
@Transactional(isolation = Isolation.REPEATABLE_READ)
override fun transfer(transfer: Transfer) {
val accountFrom = accountRepository.findByAccount(transfer.from)
.orElseThrow { EntityNotFoundException("no such account: ${transfer.from}") }
val accountTo = accountRepository.findByAccount(transfer.to)
.orElseThrow { EntityNotFoundException("no such account: ${transfer.to}") }
if (accountFrom.value < transfer.value)
throw NotEnoughFundsOnFromAccount(transfer.from)
accountFrom.value=accountFrom.value.minus(transfer.value)
accountTo.value=accountTo.value.plus(transfer.value)
accountRepository.save(accountFrom)
accountRepository.save(accountTo)
}
是否isolation = Isolation.REPEATABLE_READ
足以执行从账户到账户的资金转账(当然以上都是针对多线程实现的)?还是我需要一些同步帐户代码?
解决方案
推荐阅读
- windows - 通过 PowerShell 使用 SSO 参数打开 Chrome
- wso2 - WSO2 Siddhi 独立库 - :timeBatch 不存在扩展
- webhooks - Box - Webhook v2 - 使用 Box CLI 禁止 403
- android - 使用通知控件的停止按钮停止服务?
- angular - 使用 formbuilder 动态添加字段
- erlang - 如何过滤没有列表 2 元素的列表 1
- azure - .net 核心上的 Azure Webjobs
- c++ - 如何将编译时字符串(BOOST_METAPARSE_STRING)转换为运行时字符串?
- java - gradle java library plugin不会将src/main/resources下的文件放到jar文件中
- php - 显示数组会话数据时出现问题