首页 > 解决方案 > 隔离 = 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足以执行从账户到账户的资金转账(当然以上都是针对多线程实现的)?还是我需要一些同步帐户代码?

标签: javaspring-bootkotlintransactionsspring-transactions

解决方案


推荐阅读