Где использовать аннотацию @Transactional и аннотацию @Repository

Некоторые из примеров в Интернете используют аннотацию @Transactional для методов реализации DAO, а некоторые используют эту аннотацию для методов уровня сервиса. Куда лучше поставить @Transactional и почему?

Аналогично куда поставить аннотацию @Repository. На интерфейсе DAO или на реализации DAO?

2
0
1 555
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я всегда использовал аннотации @Service и @Repository в их реализациях, но их можно вставить в любую из них. Хотя размещение его в интерфейсе будет означать, что у вас не будет больше одной реализации, потому что вы получите ошибку NoUniqueBeanDefinitionException.

В случае с @Transactional это зависит, но обычно это идет на службу. Если вы хотите иметь возможность добавлять различные вызовы БД в одну транзакцию, тогда она должна идти в сервисе. Если вы хотите совершать небольшие транзакции, тогда лучше всего будет использовать DAO, но тогда вы не сможете изменить несколько таблиц за одну транзакцию. Еще один недостаток его использования в DAO заключается в том, что вы не сможете откатить несколько модификаций, а только те, которые выполняются Bing DAO.

Другие вопросы по теме