Транзакции Spring и JDBC: Как обеспечить уровень изоляции SERIALIZABLE в объекте DAO? - PullRequest
3 голосов
/ 22 апреля 2011

Транзакции определяются на уровне обслуживания, как обычно.

Но иногда у нас есть метод DAO, который требует более высокого СЕРИАЛИЗИРУЕМОГО уровня изоляции.

Но знание того, необходим ли уровень SERIALIZABLE изоляции, инкапсулировано в методе DAO, метод обслуживания не должен знать об этом.

Как я могу применить СЕРИАЛИЗИРУЕМЫЙ уровень изоляции на уровне метода DAO? Я даже не могу найти способ определить что такое уровень изоляции весной.

1 Ответ

1 голос
/ 22 апреля 2011

Сервисный уровень обычно определяет транзакционную семантику.

Но ... вы можете добавить после аннотации для достижения сериализуемого уровня изоляции в методе реализации DAO для достижения эффекта:

@Transactional(isolation=Isolation.SERIALIZABLE,propagation=Propagation.MANDATORY)

ОБЯЗАТЕЛЬНО, чтобы метод DAO не создавал транзакцию, если ее не существует.Это заставит все вызовы начинаться с сервисного метода.Вы можете изменить это, если хотите.

Дайте мне знать, как это работает.

...