2025년 8월 25일 월요일(63일차)

Jeonghoon·2025년 8월 25일

jeonghoon's Study

목록 보기
64/128

📖 페이징 처리 및 애노테이션 정리 노트

📄 페이징 처리 (Paging)

항목설명
Object 타입 사용여러 정보를 한 번에 담기 위해 Object 타입을 활용
추가 정보 처리테이블 DTO에 포함되지 않은 정보는 별도 필드로 선언 후, JOIN 결과에 활용
페이징 기본 개념현재 페이지 번호(page), 한 페이지당 표시할 개수(size) 등을 받아서 페이징 처리
Service - Dao 관계하나의 Service에서 여러 번 Dao를 호출하여 DB 접근
defaultValue쿼리스트링 매개변수가 없을 경우, 기본값을 자동으로 대입

💡 예시 코드:

@GetMapping("/list")
public List<Post> getPagedList(
    @RequestParam(defaultValue = "1") int page,
    @RequestParam(defaultValue = "10") int size
) {
    int offset = (page - 1) * size;
    return postService.getPagedPosts(offset, size);
}

⚙️ 로직 개요
1. 클라이언트로부터 page, size 값을 수신
2. offset 계산 ((page - 1) * size)
3. DAO에서 LIMIT / OFFSET SQL로 페이징 조회
4. totalCount 등 추가 정보를 ObjectMap 형태로 반환


🧩 Annotation

어노테이션설명
@RequiredArgsConstructorfinal 변수에 대한 생성자를 자동으로 생성하는 Lombok 어노테이션

💡 예시 코드:

@Service
@RequiredArgsConstructor
public class PostService {
    private final PostRepository postRepository; // 생성자 자동 생성
}

효과:

  • 코드 간결화 (생성자 직접 작성 불필요)
  • 의존성 주입 시 final 필드 보장

0개의 댓글