Код IT Загрузка примера кода…

Java main.java
// получение EntityManager (в Spring Boot — инъекция через @PersistenceContext)
@Transactional
public void transferFunds(Long fromId, Long toId, BigDecimal amount) {
    User from = em.find(User.class, fromId); // загружает сущность по ID
    User to = em.find(User.class, toId);

    if (from.getBalance().compareTo(amount) < 0) {
        throw new InsufficientFundsException();
    }

    from.setBalance(from.getBalance().subtract(amount));
    to.setBalance(to.getBalance().add(amount));

    // никаких em.update() не требуется!
    // изменения автоматически синхронизируются с БД при коммите транзакции (flush)
}
// получение EntityManager (в Spring Boot — инъекция через @PersistenceContext)
@Transactional
public void transferFunds(Long fromId, Long toId, BigDecimal amount) {
    User from = em.find(User.class, fromId); // загружает сущность по ID
    User to = em.find(User.class, toId);

    if (from.getBalance().compareTo(amount) < 0) {
        throw new InsufficientFundsException();
    }

    from.setBalance(from.getBalance().subtract(amount));
    to.setBalance(to.getBalance().add(amount));

    // никаких em.update() не требуется!
    // изменения автоматически синхронизируются с БД при коммите транзакции (flush)
}