Встречается на собеседованиях • сегодня

В чем разница между @Repository и @Service

Оба аннотации являются стереотипными и помечают класс как Spring-компонент (@Component), но имеют разные семантические значения:

  1. @Repository
    • Используется для классов, работающих с данными (DAO, репозитории)
    • Автоматически перехватывает исключения JDBC/Hibernate и преобразует их в Spring DataAccessException
    • Пример:
      java
      @Repository
      public class UserRepositoryImpl implements UserRepository {
          // JDBC/JPA операции
      }
  1. @Service
    • Обозначает сервисный слой бизнес-логики
    • Часто вызывает методы репозитория и добавляет транзакционность (@Transactional)
    • Пример:
      java
      @Service
      public class UserService {
          @Autowired
          private UserRepository repo;
          
          public User getUser(Long id) {
              return repo.findById(id);
          }
      }

Разница концептуальная: @Repository - доступ к данным, @Service - бизнес-логика. Spring обрабатывает их одинаково, но аннотации улучшают читаемость кода.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы