Home
>
DB
>
๐พ[Database] ๋ฌดํ ์คํฌ๋กค ๋ฐฉ์(Infinite Scroll)์ด๋ ๋ฌด์์ผ๊น์?
Database
Spring Boot
JPA
REST API
๐ Intro.
- ์ฌ์ฉ์๊ฐ ์คํฌ๋กค์ ๋ด๋ฆด ๋๋ง๋ค ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๋์ ์ผ๋ก ๋ก๋ํ๋ ๋ฐฉ์์
๋๋ค.
- Java์์๋ ์ฃผ๋ก Spring Boot + JPA + REST API๋ฅผ ํ์ฉํ์ฌ ๋ฌดํ ์คํฌ๋กค ๋ฐฉ์์ ๋ฐฑ์๋๋ฅผ ๊ตฌํํฉ๋๋ค.
โ
1๏ธโฃ ๋ฌดํ ์คํฌ๋กค ๋ฐฉ์์ ํต์ฌ ๊ฐ๋
.
1๏ธโฃ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ฐ์ดํฐ ์์ฒญ.
- ์คํฌ๋กค ์ด๋ฒคํธ ๋ฐ์ ์, ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ.
- ์์ฒญ ์ cursor(๋ง์ง๋ง ๊ฒ์๋ฌผ ID) ๋๋ page(ํ์ด์ง ๋ฒํธ)๋ฅผ ํฌํจ.
2๏ธโฃ ์๋ฒ๊ฐ ์์ฒญ๋ฐ์ ๋ฐ์ดํฐ๋ง ๋ฐํ.
- LIMIT ๋๋ OFFSET์ ์ฌ์ฉํ์ฌ ์ง์ ๋ ๊ฐ์๋งํผ์ ๋ฐ์ดํฐ ๋ฐํ.
-
์ปค์ ๊ธฐ๋ฐ ํ์ด์ง(Cursor Pagination)์ด ๊ฐ์ฅ ํจ์จ์ .
3๏ธโฃ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ๋ก ๋ ๋๋ง.
- ๊ธฐ์กด ๋ฐ์ดํฐ์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ์ฌ UI ์
๋ฐ์ดํธ.
โ
2๏ธโฃ Java์์ ๋ฌดํ ์คํฌ๋กค์ ๊ตฌํํ๋ 2๊ฐ์ง ๋ฐฉ์.
- ์์ฒญ ์ ํ์ด์ง ๋ฒํธ(Page Number)์ ํ์ด์ง ํฌ๊ธฐ(Page Size)๋ฅผ ์ ๋ฌํ์ฌ ํน์ ํ์ด์ง ๋ฐ์ดํฐ๋ฅผ ์กฐํ.
- SQL์์ LIMIT๊ณผ OFFSET์ ํ์ฉ.
- ๋ง์ง๋ง์ผ๋ก ์กฐํํ ๋ฐ์ดํฐ์ ID ๋๋ Timestamp๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ค์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ.
- ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ต์ ํ๋จ.
โ
3๏ธโฃ ๋ฌดํ ์คํฌ๋กค ๋ฐฉ์์ ์ฅ๋จ์ .
โ
์ฅ์ .
-
1. ์ฌ์ฉ์ ๊ฒฝํ(UX) ๊ฐ์ โ ์ฌ์ฉ์๊ฐ ์๊ฒฌ์ค๋ฝ๊ฒ ๋ฐ์ดํฐ๋ฅผ ํ์ ๊ฐ๋ฅ.
-
2. ์ฑ๋ฅ ์ต์ ํ โ ํ์ํ ๋งํผ๋ง ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ์ฌ ์๋ฒ ๋ถ๋ด ๊ฐ์.
-
3. ๋คํธ์ํฌ ์ต์ ํ โ ํ์ด์ง ์ ์ฒด๋ฅผ ๋ก๋ํ์ง ์๊ณ ํ์ํ ๋ฐ์ดํฐ๋ง ์ ์ก.
โ ๋จ์ .
-
1. ํน์ ๋ฐ์ดํฐ ๊ฒ์ ์ด๋ ค์ โ ์ฌ์ฉ์๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฐพ๊ธฐ ์ด๋ ค์.
-
2. SEO ๋ฌธ์ โ ๊ฒ์ ์์ง์ด ์ ์ฒด ์ฝํ
์ธ ๋ฅผ ํฌ๋กค๋งํ๊ธฐ ์ด๋ ค์.
-
3. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ์ฆ๊ฐ โ ํด๋ผ์ด์ธํธ ์ธก์์ ๋ฐ์ดํฐ๊ฐ ๊ณ์ ์ถ๊ฐ๋๋ฉด ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ.
๐ ๊ฒฐ๋ก .
- Java์์ ๋ฌดํ ์คํฌ๋กค์ ๊ตฌํํ ๋๋ ์ปค์ ๊ธฐ๋ฐ ํ์ด์ง(Cursor Pagination)์ด ์ฑ๋ฅ์ ์ ๋ฆฌ.
- Spring Boot + JPA์์ REST API๋ฅผ ์ ๊ณตํ๊ณ , ํด๋ผ์ด์ธํธ์์ ์์ฒญ์ ๋ณด๋ด๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ.
- ๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋๋ ์ปค์ ๊ธฐ๋ฐ ํ์ด์ง์ด ์ ํฉ.