@Volokoron

Как управлять транзакциями в spring data?

Доброго дня!
Делаю учебный проект spring boot + spring data + postgresql. Бронирование авиабилетов. Чтобы исключить возможность покупки лишних билетов, создал таблицу в которой есть информация об оставшемся количестве не проданных билетов. Вместо использования уровня изоляции Serializable, хочу заблокировать только строку через FOR UPDATE и @Lock(LockModeType.PESSIMISTIC_WRITE). Но как сделать так чтобы транзакция не коммитилась до подтверждения оплаты или в течении заданного времени, если оплата не прошла.
Или какой подход вообще использовать в данной ситуации?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
BorLaze
@BorLaze
Java developer
Не надо это именно делать через транзакции.

На каждую "покупку" создаешь заявку в отдельной таблице "бронь".
При поступлении оплаты - продаешь билет, удаляешь запись из заявок.
С определенной периодичностью проходишь по этой таблице, удаляешь устаревшие заявки.
Вот тут, да - все делаем в транзакции.

Соответственно, при расчете количества доступных билетов считаешь как КОЛ_БИЛЕТОВ - КОЛ_ЗАЯВОК.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект