Spring @Transactional только для чтения

Я экспериментирую с использованием шаблона команды, чтобы мой веб-слой мог работать с сущностями Hibernate в контексте одной транзакции (таким образом избегая исключений при отложенной загрузке). Однако сейчас я запутался в том, как мне следует иметь дело с транзакциями.

Мои команды вызывают методы уровня обслуживания, которые отмечены@Transactional аннотаций. Некоторые из этих методов уровня обслуживания доступны только для чтения, например@Transactional(readOnly=true) - а некоторые читают / пишут.

Мой сервисный уровень предоставляет обработчик команд, который выполняет команды, переданные ему от имени веб-уровня.

@Transactional
public Command handle( Command cmd ) throws CommandException

Я предполагаю, что я прав в создании командного обработчикаhandle() метод транзакционный. Именно здесь возникает путаница. Если реализация команды вызывает несколько методов уровня обслуживания, обработчик команд не может узнать, будут ли операции, вызываемые внутри команды, доступны только для чтения, для чтения / записи или для их комбинации. из двух.

Я не понимаю, как работает распространение в этом примере. Если бы я должен был сделатьhandle() методreadOnly=true, что произойдет, если команда затем вызовет метод уровня обслуживания, который аннотирован@Transactional(realOnly=false)?

Буду признателен за лучшее понимание этого и приветствую ваши комментарии ...

Андрей

Ответы на вопрос(4)

Ваш ответ на вопрос