Транзакции Spring & JDBC: как обеспечить СЕРИАЛИЗУЕМОСТЬ уровня изоляции в объекте DAO?
Транзакции определяются на уровне обслуживания, как это обычно бывает.
Но иногда у нас есть метод DAO, который требует более высокого, СЕРИАЛИЗУЕМОГО уровня изоляции.Но знание о том, необходим ли сериализуемый уровень изоляции, инкапсулируется в метод DAO, методу службы не нужно об этом знать.
Как я могу обеспечить сериализуемый уровень изоляции на уровне метода DAO? Я даже не могу найти способ определить , Что такое уровень изоляции в весенний период.
1 ответ:
Слой сервиса, как правило, определяет семантику транзакций.
Но ... вы можете добавить следующую аннотацию для достижения сериализуемого уровня изоляции на методе имплементации DAO для достижения эффекта:
@Transactional(isolation=Isolation.SERIALIZABLE,propagation=Propagation.MANDATORY)
Обязательным является то, что метод DAO не создаст транзакцию, если она не существует. Это заставит все вызовы запускаться из метода службы. Вы можете изменить это, если хотите.
Дайте мне знать, как это работает.