## ๐Ÿ“„ Spring Boot์—์„œ Pageable๋กœ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ํ…Œ์ŠคํŠธํ•˜๊ธฐ

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

SpringBoot

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

๐Ÿ“„ Spring Boot์—์„œ Pageable๋กœ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ํ…Œ์ŠคํŠธํ•˜๊ธฐ

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


๐Ÿ“Œ Repository ์ฝ”๋“œ

import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;

public interface BoardRepository extends JpaRepository<Board, Long> {
    List<Board> findByTitleContaining(String searchKeyword, Pageable paging);
}

findByTitleContaining ๋ฉ”์„œ๋“œ๋Š” ์ œ๋ชฉ์— ํŠน์ • ํ‚ค์›Œ๋“œ๊ฐ€ ํฌํ•จ๋œ Board ์—”ํ‹ฐํ‹ฐ๋“ค์„ Pageable ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.


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

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import java.util.List;

public class BoardRepositoryTest {

    @Autowired
    private BoardRepository boardRepo;

    @Test
    public void testFindByTitleContaining() {
        Pageable paging = PageRequest.of(0, 5); // ์ฒซ ํŽ˜์ด์ง€, ํŽ˜์ด์ง€๋‹น 5๊ฐœ
        List<Board> boardList = boardRepo.findByTitleContaining("์ œ๋ชฉ", paging);
        
        System.out.println("๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ:");
        for (Board board : boardList) {
            System.out.println(board.toString());
        }
    }
}

โš ๏ธ ํ…Œ์ŠคํŠธ ์ „ ํ™•์ธํ•  ๊ฒƒ

์ด ํ…Œ์ŠคํŠธ๋Š” H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ผ ๋•Œ ์ •์ƒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— H2 ์ฝ˜์†” ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ DB๊ฐ€ ์ œ๋Œ€๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ์ฃผ์„ธ์š”.

application.properties ์˜ˆ์‹œ:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true

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

๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ:
Board(id=1, title=์ œ๋ชฉ ํ…Œ์ŠคํŠธ1, ...)
Board(id=2, title=์ œ๋ชฉ ํ…Œ์ŠคํŠธ2, ...)
...


๐Ÿ’ก ์ •๋ฆฌ

  • Pageable์„ ํ™œ์šฉํ•˜๋ฉด ๋ณต์žกํ•œ ํŽ˜์ด์ง• ๋กœ์ง ์—†์ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์›ํ•˜๋Š” ์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • PageRequest.of(0, 5)๋Š” 0๋ฒˆ์งธ ํŽ˜์ด์ง€์—์„œ 5๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
  • ์‹ค์ œ ์„œ๋น„์Šค์—์„œ๋Š” Page<T> ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜๋ฐ›์•„ ๋” ๋งŽ์€ ํŽ˜์ด์ง• ์ •๋ณด๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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