## ๐Ÿ”Ž Spring Boot | ํ•„๋“œ๊ฐ’ ๊ธฐ์ค€ ์ •๋ ฌ + ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ํ…Œ์ŠคํŠธ

Yeeunยท2025๋…„ 4์›” 24์ผ
0

SpringBoot

๋ชฉ๋ก ๋ณด๊ธฐ
11/46

๐Ÿ”Ž Spring Boot | ํ•„๋“œ๊ฐ’ ๊ธฐ์ค€ ์ •๋ ฌ + ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ํ…Œ์ŠคํŠธ

Spring Data JPA์—์„œ๋Š” Pageable์„ ํ™œ์šฉํ•ด ํŽ˜์ด์ง•๋ฟ ์•„๋‹ˆ๋ผ ์ •๋ ฌ๊นŒ์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Board ์—”ํ‹ฐํ‹ฐ์˜ seq ํ•„๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๋ฉด์„œ ํŽ˜์ด์ง€ ๋‹จ์œ„ ์กฐํšŒํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.


๐Ÿงช ํ…Œ์ŠคํŠธ ์ฝ”๋“œ

import org.junit.jupiter.api.Test;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;

@Test
public void testFindByTitleContaining() {
    Pageable paging = PageRequest.of(0, 5, Sort.Direction.DESC, "seq");
    List<Board> boardList = boardRepo.findByTitleContaining("์ œ๋ชฉ", paging);

    System.out.println("๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ");
    for (Board board : boardList) {
        System.out.println(board.toString());
    }
}

๐Ÿงฉ ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช…

PageRequest.of(0, 5, Sort.Direction.DESC, "seq")
  • 0 โ†’ ์ฒซ ๋ฒˆ์งธ ํŽ˜์ด์ง€ (ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘)
  • 5 โ†’ ํŽ˜์ด์ง€๋‹น ํ•ญ๋ชฉ ์ˆ˜ (ํ•œ ํŽ˜์ด์ง€์— 5๊ฐœ ๊ฒŒ์‹œ๊ธ€)
  • Sort.Direction.DESC โ†’ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
  • "seq" โ†’ ์ •๋ ฌ ๊ธฐ์ค€ ํ•„๋“œ๋ช…

์ฆ‰, seq ํ•„๋“œ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ ์ค‘์—์„œ ์ฒซ ํŽ˜์ด์ง€(0๋ฒˆ ํŽ˜์ด์ง€)์˜ 5๊ฐœ ํ•ญ๋ชฉ์„ ๊ฐ€์ ธ์˜ค๋Š” ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๐Ÿ”ง ์ฐธ๊ณ : seq๋Š” Board ์—”ํ‹ฐํ‹ฐ์˜ ํ•„๋“œ์ด๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์—์„œ ๊ณ ์œ ํ•œ ์ˆœ์„œ๋ฅผ ์˜๋ฏธํ•˜๋Š” ์ปฌ๋Ÿผ์ž…๋‹ˆ๋‹ค. ์˜ˆ: ๊ฒŒ์‹œ๊ธ€ ๋ฒˆํ˜ธ, ๋“ฑ๋ก ์ˆœ์„œ ๋“ฑ


โœ… ์‹คํ–‰ ๊ฒฐ๊ณผ ์˜ˆ์‹œ

๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ
Board(seq=200, title=ํ…Œ์ŠคํŠธ ์ œ๋ชฉ200, ...)
Board(seq=199, title=ํ…Œ์ŠคํŠธ ์ œ๋ชฉ199, ...)
Board(seq=198, title=ํ…Œ์ŠคํŠธ ์ œ๋ชฉ198, ...)
...

๐Ÿ’ก ์ •๋ฆฌ

  • PageRequest๋Š” ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ๋ฟ ์•„๋‹ˆ๋ผ ์ •๋ ฌ ์กฐ๊ฑด๊นŒ์ง€ ํ•จ๊ป˜ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์šฉํ•œ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
  • Sort.Direction.DESC ๋˜๋Š” Sort.Direction.ASC๋ฅผ ํ†ตํ•ด ์†์‰ฝ๊ฒŒ ์˜ค๋ฆ„์ฐจ์ˆœ/๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ •๋ ฌ ๊ธฐ์ค€ ํ•„๋“œ("seq")๋Š” ๋ฐ˜๋“œ์‹œ ์—”ํ‹ฐํ‹ฐ ๋‚ด ์กด์žฌํ•˜๋Š” ์ •ํ™•ํ•œ ํ•„๋“œ๋ช…์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธ€์—์„œ๋Š” ์ •๋ ฌ ํ•„๋“œ๋ฅผ ๋‹ค์ค‘์œผ๋กœ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‚˜, Page<T> ํƒ€์ž…์œผ๋กœ ๋” ๋งŽ์€ ํŽ˜์ด์ง• ์ •๋ณด๋ฅผ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•๋„ ์†Œ๊ฐœํ•ด๋ณผ๊ฒŒ์š”!
๊ถ๊ธˆํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ๋Œ“๊ธ€์ด๋‚˜ DM ์ฃผ์„ธ์š” :)

0๊ฐœ์˜ ๋Œ“๊ธ€