728x90
반응형
기술 면접에서 자주 물어보는 부분
Pageable
Spring Data JPA 에서 Pageable을 사용하여 정렬을 지정하지 않으면 기본적으로는 기본키(primary key)를 기준으로 정렬한다.
Pageable에서 정렬을 지정하지 않으면 기본 키(@Id) 오름차순으로 정렬될 가능성이 크다.
하지만 데이터베이스 내부 동작 방식에 따라 저장된 순서대로 보이지 않을 수도 있다.
정확한 정렬을 보장하려면 Sort를 사용하여 명확히 정렬 조건을 지정하는 것이 좋다.
- 기본 키(@Id) 기준으로 정렬
- @Id가 있는 필드(예: report_id)의 오름차순(ASC) 정렬이 기본값
- @GeneratedValue를 사용하는 경우, 자동 증가되는 순서대로 반환
- 인덱스(Index)가 있는 경우
- 인덱스가 걸려 있는 컬럼이 있다면, 데이터베이스의 내부 처리 방식에 따라 해당 인덱스 순서에 의해 정렬될 수 있음
- 데이터베이스 저장 순서에 따라 다름
- 정렬을 명시적으로 지정하지 않으면 DB의 내부 동작 방식에 따라 랜덤하게 보일 수도 있음
- 특히 MySQL이나 PostgreSQL의 경우 INSERT된 순서와 다르게 나올 가능성이 있음
List
List로 조회하면 기본적으로 데이터베이스가 반환하는 순서대로 가져옴.
- 기본 키(@Id) 기준으로 정렬될 수도 있고, DB의 저장 순서에 따라 랜덤하게 나올 수도 있음.
- MySQL, PostgreSQL 등 대부분의 DB는 정렬을 명시적으로 지정하지 않으면 데이터 삽입 순서를 보장하지 않음.
- 따라서, 정렬이 필요하면 명확하게 정렬 조건을 설정해야 함.
728x90
반응형
'Spring' 카테고리의 다른 글
Spring, 403 AccessDenied 오류(적용하지 않은 어노테이션이 적용됨) (0) | 2025.04.08 |
---|---|
Spring, DTO, DAO, BO, VO 차이점 (1) | 2025.04.01 |
Spring, Service 자주 사용하는 어노테이션 정리 (0) | 2025.03.18 |
Spring, Lazy Loading 사용하는 방법 / 외래키로 연결된 테이블의 데이터 같이 가져오는 방법(JPA) (0) | 2025.03.18 |
Spring, Controller 어노테이션 정리 (0) | 2025.03.17 |