Как использовать аннотацию @Transactional при загрузке Spring - PullRequest
3 голосов
/ 02 мая 2019

Я работаю над проектом весенней загрузки.

Перед использованием @Transactional аннотации в моем проекте у меня есть два вопроса

  1. Наилучшая практика использования аннотации @Transactional в подпружиненной загрузке, на уровне обслуживания или на уровне DAO?

  2. Если уровень обслуживания, то где я могу использовать аннотацию @Transactional для класса или для метода в этом классе?

Ответы [ 2 ]

2 голосов
/ 02 мая 2019
  1. Использование @ Транзакционный в Сервисный уровень , поскольку уровень DAO не должен включать бизнес-логику

Сервисный уровень может вызывать разные DAO для выполнения операций с БД. Предположим, что у вас есть 3 операции DAO в сервисном методе. Если ваша 1-я операция DAO завершилась неудачно, другие две могут все еще быть пропущены, и вы получите несовместимое состояние БД. Слой Annoating Service может спасти вас от таких ситуаций.

  1. Используйте его на уровне метода, потому что уровень класса менее полезен, потому что он заставляет все методы (и будущие методы / подклассы) быть транзакционными

На уровне класса эта аннотация применяется по умолчанию ко всем методам декларирующего класса и его подклассов

1 голос
/ 02 мая 2019
  1. на уровне обслуживания: вы хотите, чтобы ваш бизнес-метод был ACID
  2. в классе, если вы хотите, чтобы все методы бина были транзакционными, в методе, если вы хотите, чтобы этот конкретный метод былтранснациональный или иметь разные транзакционные атрибуты
...