Вопрос проверяет понимание различий между абстракцией доступа к данным (Spring Data) и конкретной ORM-реализацией (Hibernate).
Spring Data — это проект Spring, предоставляющий единый интерфейс для работы с разными хранилищами данных (JPA, MongoDB, Redis и т.д.). Hibernate — это ORM-фреймворк, реализующий спецификацию JPA и отвечающий за маппинг Java-объектов на таблицы базы данных.
Spring Data JPA использует Hibernate как провайдер JPA по умолчанию. Вы пишете интерфейс репозитория, а Spring Data автоматически создает реализацию, которая вызывает Hibernate для выполнения запросов.
// Spring Data репозиторий
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByLastName(String lastName);
}
// Использование
@Service
public class UserService {
@Autowired
private UserRepository repository;
public List<User> getUsersByLastName(String name) {
return repository.findByLastName(name); // Spring Data генерирует запрос
}
}Вывод: Используйте Spring Data для быстрой разработки CRUD-приложений, а Hibernate — когда нужен тонкий контроль над ORM-логикой или работа без Spring.