๐ํ๊ฒฝ
IntelliJ Ultimate
Java 17
Spring boot 3.2.3
Gradle - Groovy
Dependencies:
Spring Web
Thymeleaf
Spring Data JPA
lombok
MariaDB 10.11
Spring Dev tool
๐ ํ๋ฆ
CRUD๋ ์ด์ (๊ฑฐ์ง๋ง ์กฐ๊ธ ๋ณดํ์) ๋ ๊ฐ๊ณ ๋ ํ๋ผ๋ฉด ํ ์ ์๋๋ฐ, ํ์ด์ง ์ฒ๋ฆฌ๋ ํญ์ ํ๊ธฐ ์ซ๋ค ๊ฐ๋ฐ ์๋๊ฐ ๋๋๊ณ ์ค์๋ ์ฆ๋ค. ์ด๋ฅผ ์ํด Spring Data JPA๋ ํ์ด์ง ๊ธฐ๋ฅ๋ ๊ตฌํํด๋์๋ค.
ํ์ด์ง ์ฒ๋ฆฌ๋ `Pageable`ํ์ ์ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํด์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ๋ฉด ๋๋ค. `Pageable`์ ์ธํฐํ์ด์ค๋ก, ์ผ๋ฐ์ ์ผ๋ก `PageRequest.of()`๋ฅผ ์ฌ์ฉํ๋ค.
`PageRequest.of(ํ์ด์ง๋ฒํธ, ์ฌ์ด์ฆ, Sort)` ์ ๋ ฌ ์กฐ๊ฑด์ ์๋ต ๊ฐ๋ฅ.
๋๋ `PageRequest.of(ํ์ด์ง๋ฒํธ, ์ฌ์ด์ฆ, Sort.direction, ์์ฑ)`
๋งค๊ฐ๋ณ์๋ก `Pageable`์ ์ฌ์ฉํ๋ฉด ๋ฐํ ํ์ ์ผ๋ก `Page<T>`๋ฅผ ๋ฐ์ ์ ์๋๋ฐ, ์ด๋ ๋ชฉ๋ก๋ฟ ์๋๋ผ `count`์ฒ๋ฆฌ๋ ํจ๊ป ์คํํด์ค๋ค.
๐ ๊ตฌํ
์ฌ์ค `JpaRepository`๊ฐ ๋ค ํด์ฃผ๊ธฐ ๋๋ฌธ์ `findAll()`์ ๋งค๊ฐ๋ณ์์ ๊ทธ๋ฅ ํ์ด์ง๋ฅผ ์ด๋ป๊ฒ ๋ถ๋ฌ์ฌ ์ง ์ค์ ๋ง ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
// import org.springframework.data.domain.Page;
// import org.springframework.data.domain.PageRequest;
// import org.springframework.data.domain.Pageable;
@Test
public void testPaging(){
Pageable pageable = PageRequest.of(0, 10, Sort.by("bno").descending());
Page<Board> result = boardRepository.findAll(pageable);
}
Hibernate:
select
b1_0.bno,
b1_0.content,
b1_0.moddate,
b1_0.regdate,
b1_0.title,
b1_0.writer
from
board b1_0
order by
b1_0.bno desc
limit
?, ?
Hibernate:
select
count(b1_0.bno)
from
board b1_0
JDBC์์ ํ์ด์ง ๋ฐ์์์ limit ๊ฑธ๊ณ count ํ๊ณ prev next ์ด์ฉ๊ณ ์ ์ฉ๊ณ ์๋น ์ง๊ฒ ๊ตฌํํ๋ ํ์ด์ง์ ๋จ ๋ ์ค๋ก ํด๊ฒฐํด์ค๋ค. ์ฌ์ง์ด count๋ ์์์ ๋ถ๋ฌ์จ๋ค. ๊ธฐํนํด์ ํ ๋ง์ด ์๋ค.
๋ฆฌํด ํ์ ์ธ `Page<T>`๋ ๋ด๋ถ์ ์ผ๋ก ํ์ด์ง์ ํ์ํ ์ฌ๋ฌ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๋ค. ์ด์ /๋ค์ ํ์ด์ง๊ฐ ์กด์ฌํ๋์ง, ์ด ๋ช ํ์ด์ง์ธ์ง, ์ ์ฒด ๋ฐ์ดํฐ์ ๊ฐ์๋ ๋ช ๊ฐ์ธ์ง๊น์ง ์์๋ผ ์ ์๋ค.
2024-03-12T21:08:17.758+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : total count: 99
2024-03-12T21:08:17.759+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : total pages: 10
2024-03-12T21:08:17.759+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : page number: 0
2024-03-12T21:08:17.759+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : page size: 10
2024-03-12T21:08:17.760+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : board: Board(bno=100, title=update title!!!, content=update content!!!, writer=user0)
2024-03-12T21:08:17.760+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : board: Board(bno=99, title=title...99, content=content... 99, writer=user9)
2024-03-12T21:08:17.760+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : board: Board(bno=98, title=title...98, content=content... 98, writer=user8)
2024-03-12T21:08:17.761+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : board: Board(bno=97, title=title...97, content=content... 97, writer=user7)
2024-03-12T21:08:17.761+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : board: Board(bno=96, title=title...96, content=content... 96, writer=user6)
2024-03-12T21:08:17.761+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : board: Board(bno=95, title=title...95, content=content... 95, writer=user5)
2024-03-12T21:08:17.761+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : board: Board(bno=94, title=title...94, content=content... 94, writer=user4)
2024-03-12T21:08:17.761+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : board: Board(bno=93, title=title...93, content=content... 93, writer=user3)
2024-03-12T21:08:17.761+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : board: Board(bno=92, title=title...92, content=content... 92, writer=user2)
2024-03-12T21:08:17.761+09:00 INFO 57142 --- [b02] [ Test worker] o.z.b02.repository.BoardRepositoryTest : board: Board(bno=91, title=title...91, content=content... 91, writer=user1)
๐Spring Data JPA๋ก CRUDํ๊ธฐ
[Spring/JPA] Spring Data JPA๋ฅผ ์ฌ์ฉํ ๊ฒ์ํ CRUD
๐์ฐธ๊ณ
์๋ฐ ์น ๊ฐ๋ฐ ์ํฌ๋ถ - ๊ตฌ๋ฉ๊ฐ๊ฒ ์ฝ๋ฉ๋จ
'Java > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SpringBoot/JPA] Querydsl์ ์ฌ์ฉํ ๋์ ์ฟผ๋ฆฌ (0) | 2024.03.12 |
---|---|
[SpringBoot/JPA] ์ฟผ๋ฆฌ ๋ฉ์๋๋ฅผ ๋์ฒดํ๋ @Query (0) | 2024.03.12 |
[SpringBoot/JPA] Spring Data JPA๋ฅผ ์ฌ์ฉํ ๊ฒ์ํ CRUD (0) | 2024.03.12 |
[SpringBoot] Querydsl ์ค์ ์ ์ค๋ฅ (0) | 2024.03.11 |
[Spring] summernote ์๋ํฐ๋ก ์ด๋ฏธ์ง๊ฐ ํฌํจ๋ ๊ธ ์ ๋ก๋ํ๊ธฐ (0) | 2024.02.22 |