Các interface trong Spring Data hierarchy:
Repository (marker)
├─ CrudRepository / ListCrudRepository // CRUD: save, findById, findAll, deleteById, count
├─ PagingAndSortingRepository // findAll(Pageable), findAll(Sort)
└─ JpaRepository // extends ListCrudRepository + ListPagingAndSortingRepository
// + saveAll, deleteAllInBatch, getReferenceById, flushLưu ý Spring Data 3.x: PagingAndSortingRepository không còn extends CrudRepository (khác 2.x) — muốn cả CRUD lẫn paging phải extend cả hai, hoặc đơn giản dùng JpaRepository (gộp tất cả + method JPA-specific).
Thực tế: hầu hết extend JpaRepository. Dùng CrudRepository khi muốn interface tối giản, tránh coupling JPA (dễ swap sang MongoDB — các store khác cũng có CrudRepository).
Pagination trả Page<T> (getContent, getTotalElements, getTotalPages) — code chi tiết xem câu Pagination & Sorting.