Встречается на собеседованиях • сегодня

Как Serializable выбирает, какая транзакция попадет в базу данных

Serializable в Java — это интерфейс-маркер, не влияющий на выбор транзакций. Вопрос, вероятно, о Serializable уровне изоляции в СУБД.

Serializable (уровень изоляции) гарантирует, что параллельные транзакции выполняются так, будто они идут последовательно. СУБД использует механизмы блокировок или MVCC (Multi-Version Concurrency Control) для предотвращения:

  • Грязного чтения
  • Неповторяемого чтения
  • Фантомного чтения

Пример (PostgreSQL):

sql
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-- операции
COMMIT;

Если возникает конфликт (например, две транзакции пытаются изменить одни данные), СУБД откатывает одну из них с ошибкой Serialization Failure. Приложение должно повторить транзакцию.

В Java (Spring):

java
@Transactional(isolation = Isolation.SERIALIZABLE)
public void transferMoney() { ... }

Итог: Serializable не "выбирает" транзакции, а обеспечивает строгую изоляцию, иногда ценой производительности.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы