Ответ
CrudRepository<T, ID> — это центральный интерфейс Spring Data, предоставляющий готовые CRUD-операции (Create, Read, Update, Delete) для работы с сущностью типа T и идентификатором типа ID в репозитории. Он является родительским для более специализированных интерфейсов, таких как JpaRepository или MongoRepository.
Для чего используется:
- Сокращение шаблонного кода. Избавляет разработчика от необходимости писать базовую реализацию репозитория.
- Стандартизация. Предоставляет унифицированный набор методов для доступа к данным.
- Интеграция. Легко интегрируется с различными системами хранения данных (JPA, MongoDB, Cassandra и др.) через соответствующие модули Spring Data.
Ключевые методы, объявленные в CrudRepository:
<S extends T> S save(S entity); // Сохраняет или обновляет сущность
Optional<T> findById(ID id); // Находит сущность по ID
Iterable<T> findAll(); // Возвращает все сущности
long count(); // Возвращает количество сущностей
void delete(T entity); // Удаляет сущность
void deleteById(ID id); // Удаляет сущность по ID
boolean existsById(ID id); // Проверяет существование сущности по ID
// ... и другие
Пример использования:
// 1. Объявление репозитория (Spring создаст реализацию автоматически)
public interface UserRepository extends CrudRepository<User, Long> {
// Можно объявить дополнительные методы по именам или @Query
List<User> findByLastName(String lastName);
}
// 2. Использование в сервисе
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User createUser(User user) {
return userRepository.save(user); // Используем готовый метод save
}
public Optional<User> getUser(Long id) {
return userRepository.findById(id); // Используем готовый метод findById
}
}
Таким образом, CrudRepository — это фундаментальный строительный блок для репозиториев в Spring Data, обеспечивающий базовую функциональность работы с данными.