Можно ли над методом рест-контроллера ставить аннотацию @Transactional
?
Будут ли проблемы, если одновременно по этому URL одновременно будут пытаться получить данные несколько клиентов?
Нельзя, однозначно и бесповоротно. Будут проблемы связанные с обработкой транзакций.
Здесь я укажу некоторые ссылки:
@Transactional
анотации..Что лучше всего с @Transactional
, вы должны положить его, если у вас
есть доступ к базе данных.
См. «Понимание реализации декларативной транзакции Spring Framework»
вы просто аннотируете свои классы аннотацией @Transactional, добавляете в свою конфигурацию строку (`<tx: annotation-driven />`), а
затем ожидаете, что вы поймете, как все это работает.
Лучше всего использовать управление транзакциями Spring. Аннотации
@Transactional
для использования транзакций. На заводе-изготовителе
используется LocalSessionFactoryBean
. Все бобы управляются весной,
поэтому у вас нет забот.
Просто вы можете найти описание этих аннотаций на сайте docs Spring.
В ближайшее время, чтобы ответить на ваши вопросы, разница между ними заключается в том, что они используются для разных целей.
@Transactional используется для демаркации кода, участвующего в транзакции. Он помещается на классы и методы.
@Repository используется для определения Spring-компонента, поддерживающего транзакции, его также можно использовать в DI.
Они могут использоваться как в одном классе.
Можно. Никаких технических ограничений для этого нет. Но не нужно, так как это неправильно с точки зрения проектирования архитектуры. Ни контроллеры, ни слой доступа к данным не могут располагать необходимыми знаниями о взаимосвязях данных, в контексте которых имеет смысл транзакции применять. Это прерогатива сервисного слоя, в котором и должна располагаться вся бизнес-логика.
UPDATE: Так как правильность моего ответа ставят под сомнение, придётся его дополнить.
Во-первых, мне приходилось видеть проекты крупных и солидных компаний, в которых на протяжении многих лет транзакции успешно используется именно в web-слое. Во-вторых, первая же ссылка в Google по запросу "spring @transactional @controller" ведёт на большой SO, где люди делятся тем же опытом. Наконец, не может быть более железного аргумента, чем рабочий код. Поэтому я накидал простенький проект и залил его на GitHub - https://github.com/TheDeadOne/spring-transactional-controller-demo.
Можно
Пост процессор, увидев аннотацию @Transactional вокруг аннотированного класса создаст прокси, в котором будут происходить (очень примерно) две вещи
С точки зрения многопоточности от заворачивания контроллера в прокси ничего не меняется.
Но не нужно
А вот с точки зрения архитектуры это плохая идея. Первая буква в слове SOLID: The Single Responsibility Principle Ответственность контроллера - получить request и попросить кого нибудь его обработать и отправить ответ. Не надо вешать на него дополнительную функциональность.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Отображается только одно сообщение "Strips" как при нажатии на маркер с выводом сообщения "Strips", так и у маркера, который должен выводить сообщение...
Мне необходимо однозначно определить, что ViewPager домотан до концаТ