[Spring] JPA: ํŽ˜์ด์ง•

[์›๋ณธ ๋งํฌ]

๋ณดํ†ต ๊ฒŒ์‹œํŒ ๊ฐ™์€๊ฑธ ๊ตฌํ˜„ํ•˜๋‹ค๋ณด๋ฉด, ํŽ˜์ด์ง€ ๋ณ„๋กœ ๊ฒŒ์‹œ๋ฌผ๋“ค์„ ๋ถ„๋ฅ˜ํ•ด์„œ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์€ ํ•„์ˆ˜๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋งˆ๋ จ์ด๋‹ค.

1 ํŽ˜์ด์ง€๋ฅผ ์ฐพ์œผ๋ฉด 1 ํŽ˜์ด์ง€ ๊ตฌ์—ญ์˜ ๊ฒŒ์‹œ๋ฌผ๋งŒ ๋ณด์—ฌ์ฃผ๊ณ , 2 ํŽ˜์ด์ง€๋ฅผ ์ฐพ์œผ๋ฉด 2ํŽ˜์ด์ง€์— ์žˆ๋Š” ๊ฒƒ๋งŒ ๋ณด์—ฌ์ฃผ๊ณ ... ๊ทธ๋ž˜์•ผ ํ•˜๋Š”๋ฐ, ์ด๊ฒƒ๋„ ์†์œผ๋กœ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ๊ฝค๋‚˜ ๊ท€์ฐฎ๊ณ  ๋ณต์žกํ•œ ์ž‘์—…์ด๋‹ค.

๊ทธ๋ž˜์„œ JPA์—์„œ๋Š” ์ด์— ๋Œ€ํ•œ ์ž๋™ํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

์‚ฌ์‹ค JPARepository์— ์ž๋™ ์ƒ์„ฑ๋˜๋Š” ๋ฉ”์„œ๋“œ ์ค‘ ํ•˜๋‚˜๋กœ, Pageable์„ ๋ฐ›๋Š” findAll์˜ ์˜ค๋ฒ„๋กœ๋”ฉ ๋ฒ„์ „์ด ์žˆ๋‹ค!
์ด๊ฑธ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

ํ…Œ์ŠคํŠธํ•  ํ…Œ์ด๋ธ”์˜ ์ƒํ™ฉ์€ ์ด๋ ‡๋‹ค

๊ฐ„๋‹จํ•˜๋‹ค.

์ €๊ฑธ ํ•œ ํŽ˜์ด์ง€์— 5๊ฐœ์”ฉ ๋“ค์–ด๊ฐ€๋Š” ๊ฑธ๋กœ ์ชผ๊ฐœ๋ณด๊ฒ ๋‹ค.
๊ทธ๋ฆฌ๊ณ  Pageable์„ ๊ตฌํ˜„ํ•œ ํƒ€์ž…์ธ, PageRequest ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. of๋ผ๋Š” ์ •์ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค.
์ฒซ๋ฒˆ์งธ ์ธ์ž๋Š” ์ ‘๊ทผํ•  ํŽ˜์ด์ง€, ๋‘๋ฒˆ์งธ ์ธ์ž๋Š” ํŽ˜์ด์ง€๋‹น ๊ฐœ์ˆ˜.

์˜ˆ์ „์—” ์ € ์ •์  ๋ฉ”์„œ๋“œ of ๋Œ€์‹  ์ƒ์„ฑ์ž๋ฅผ ์ผ๋Š”๋ฐ, ์ง€๊ธˆ์€ Deprecated๋๋‹ค.

์—ฌํŠผ ์ €๋ ‡๊ฒŒ ๋Œ๋ฆฌ๋ฉด

์ด๋ ‡๊ฒŒ ๋‹ค์„ฏ๊ฐœ๋ฅผ ์ž˜ ๊ฐ€์ ธ์™€์ค€๋‹ค.

1์„ ์ฃผ๋ฉด ๊ทธ ๋‹ค์Œ 5๊ฐœ๋ฅผ ์ฃผ๊ณ .

2๋ฅผ ์ „๋‹ฌํ•˜๋ฉด, ์ด์ œ ๋งˆ์ง€๋ง‰ ๋–จ๊ฑฐ์ง€ 3๊ฐœ๋ฅผ ๋˜์ ธ์ค€๋‹ค.


๊ทธ๋ฆฌ๊ณ  ํŽ˜์ด์ง•์šฉ findAll ๋ฉ”์„œ๋“œ๋Š” ์‚ฌ์‹ค List๊ฐ€ ์•„๋‹Œ, Page ๊ฐ์ฒด๋ฅผ ๋˜์ ธ์ค€๋‹ค.
์—ฌ๊ธฐ์—๋Š” ํŽ˜์ด์ง•์— ์œ ์šฉํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๋“ค์ด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.



์ •๋ ฌ์กฐ๊ฑด ์„ค์ •ํ•˜๊ธฐ

์ด์™ธ์—๋„ PageRequest ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ• ๋•Œ ์„ธ๋ฒˆ์งธ ์ธ์ž๋กœ Sort ๊ฐ์ฒด๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ์ •๋ ฌ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ by๋ผ๋Š” ์ •์ ๋ฉ”์„œ๋“œ๋กœ ์ƒ์„ฑํ•˜๋ฉฐ, ์ธ์ž๋กœ๋Š” ์ •๋ ฌ์˜ ๊ธฐ์ค€์ด ๋  ์—”ํ‹ฐํ‹ฐ์˜ ์ด๋ฆ„์„ ๋„ฃ์–ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ค๋ฆ„์ฐจ์ˆœ ๋‚ด๋ฆผ์ฐจ์ˆœ์€ descending, ascending ๋“ฑ์œผ๋กœ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ง์ด๋‹ค.

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ

๊ฑฐ๊พธ๋กœ ์ •๋ ฌํ•ด์„œ ์ž˜ ๋ฟŒ๋ ค์ค€๋‹ค.



ํŽ˜์ด์ง• ๋ฉ”์„œ๋“œ ์ปค์Šคํ…€

๊ธฐ๋ณธ์œผ๋กœ ๊ตฌํ˜„๋œ findAll์„ ์จ๋„ ๋˜์ง€๋งŒ, ๋‹น์—ฐํžˆ ์ข€๋” ๋ณต์žกํ•œ ๊ตฌํ˜„์ด ํ•„์š”ํ•  ์ผ์ด ๋งŽ๋‹ค.

์ปค์Šคํ…€์€ ๋ญ... ์‚ฌ์‹ค ๋ณ„๊ฑฐ ์—†๋‹ค.
๊ทธ๋ƒฅ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๊ตฌํ˜„ํ•˜๋˜ ๊ฒƒ์—๋‹ค๊ฐ€, List ํƒ€์ž…์„ Page๋กœ ๋ฐ”๊พธ๊ณ , Pageble ํƒ€์ž…์˜ ์ธ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด JPA๊ฐ€ ์•Œ์•„์„œ ํŽ˜์ด์ง• ๋ฒ„์ „์œผ๋กœ ๊ตฌํ˜„ํ•ด์ค€๋‹ค.

id๊ฐ€ 100 ์ด์ƒ์ธ ๊ฒƒ๋งŒ ๊ธ์–ด์˜ค๋„๋ก ํ–ˆ๋‹ค.

์ž˜ ๊ธ์–ด์˜จ๋‹ค.


์ฐธ์กฐ
https://velog.io/@conatuseus/JPA-Paging-%ED%8E%98%EC%9D%B4%EC%A7%80-%EB%82%98%EB%88%84%EA%B8%B0-o7jze1wqhj