#88 Ревью Spring-сервиса перевода денег

Компании:
ОТП Банк
Темы:
SpringТранзакцииКод ревью

Сделать код-ревью:

@Data
class Account extends Object {
    Float money;
    String userName;
}

@Service
class Main_Account_Service extends Object {

    @Autowired
    public Datasource datasource;

    /* Переводит деньги с одного аккаунта на другой */
    public void TransferMoney(Account from, Account to, Float money) {
        // блокируем первый счет
        synchronized(from) {
            // блокируем второй счет
            synchronized(to) {
                // переводим деньги
                from.money = from.money - money;
                to.money = to.money + money;

                // сохраняем результат в БД
                save(from);
                save(to);
            }
        }
    }

    /* Сохраняет аккаунт в БД */
    public void save(Account account) {
        // соединение с БД
        Connection conn = datasource.getConnection();
        try {
            // создаем запрос
            Statement s = conn.createStatement();

            // выполняем запрос
            s.execute("UPDATE account SET money = " + account.money + " WHERE userName = '" + account.userName + "'");
        } finally {
            // закрываем соединение с БД
            conn.close();
        }
    }
}

Разбор вопроса

Ментор
Ответь как на реальном собеседовании. Я задам уточняющие вопросы, а затем сравню твой ответ с эталонным и покажу точность в %.
Войди, чтобы начать диалог Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти