Будет ли лучший способ написания этого кода, который автоматически обновляет таблицы Y и Z после вставки в таблицу X? - PullRequest
1 голос
/ 15 апреля 2019

Я новичок в Spring Boot 2. Я делаю тест для компании, и я решил использовать этот фреймворк, потому что я также изучаю Java в Udemy.

Задача - это небольшое приложение, имитирующее банковскую платформу, где я могу создавать бенефициаров, переводить им денежные средства и просматривать историю транзакций. Я написал код для создания транзакции и автоматического обновления баланса выбранного получателя, а также вставил запись в таблицу историй:

@PostMapping("/")
public Transaction addTransfer(@Valid @RequestBody Transaction transaction) {
    if (!transactionRepository.hasBeneficiaryWithId(transaction.getBeneficiaryId())) {
        throw new NotFoundException("Beneficiary does not exist");
    }

    Transaction newTransfer = transactionRepository.save(transaction);

    try {
        beneficiaryRepository.updateBeneficiaryBalance(newTransfer.getAmount(), newTransfer.getBeneficiaryId());
        historyRepository.insertHistory(newTransfer.getId());
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

    return newTransfer;
}

Сначала я написал пользовательский класс исключений, который проверяет, существует ли данный идентификатор получателя, затем после сохранения транзакции он выполняет коды из двух разных репозиториев разных сущностей. Это:

@Modifying
@Query("UPDATE Beneficiary SET balance = ?1 WHERE id = ?2")
public Integer updateBeneficiaryBalance(double balance, int beneficiaryId);

и

@Modifying
@Query(value = "INSERT INTO histories (transfer_id) VALUES (?1)", nativeQuery = true)
public Integer insertHistory(int transferId);

Я бы хотел знать правильный способ написания подобных вещей. Я не знаю, является ли это только самым основным способом или как это должно быть сделано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...