ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฃจํํฌ๋ฆฌ์์ดํฐ๋ธ Version2 ์ ์(Spring Data JPA, React.js ํ๊ธฐ)
dev_0hoon 2024. 4. 20. 16:32
Version 1.
SpringMVCBuild: Maven
Java: 1.8
JSP
Mybatis
๐ฝ Upgrade
Version 2.
SpringBoot: 3.1.3Build: Gradle
Java: 17
React:18.2
Spring data JPA
๋ชฉํ
์ฝ 1๋ ์ ์ฆ์ ๋ง๋ ํ๋ก์ ํธ์ ์ ๋ฐ์ดํธ ์ ์์ ๋ฐ์๋ค.
→ SpringMvc ๋ณต์ต, Spring JPA, data JPA, React.js์ ๋ชฉ์ ์ผ๋ก ํ๋ก์ ํธ ์งํ
→ ์์ธ์ฒ๋ฆฌ ๋ฑ ์ด์ ๋์ ๋ถํธํ๋ ์ ๊ฐ์
→ ๋ถํธํ๋ Work UI ๊ฐ์
BACK ๋จ(์์คํ์ธ)
์์ธ์ฒ๋ฆฌ ๊ณตํต ๊ธฐ๋ฅbatch size์ฒ๋ฆฌ, ์ฟผ๋ฆฌ ์์ฒญ ํ์ ์ค์์ผ๋ก ์๋๊ฐ์
1. ์์ธ์ฒ๋ฆฌ
์์ธ์ฒ๋ฆฌ๋ ํฌ๊ฒ ๋ฐ๋ ๋ถ๋ถ์ผ๋ก ๊ณ ๋ฏผ์ด ๋ง์ด ๋์๋ค. ์ค๋ฌด์์๋ ์ด๋ป๊ฒ ์ฌ์ฉ๋ ๊น๋ฅผ ๊ณ ๋ฏผํ๋ฉฐ ์งํํ๋ค. ๊ณตํต์ผ๋ก ์ก๊ณ ์ค๋ฅ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ง์ ๋ณด๋ด๋ ๊ฒ์ด front์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋ ๊ณตํต์ผ๋ก ๋ง๋ค์ด ์ฌ์ฉํ๊ธฐ ์ข๋ค๊ณ ์๊ฐํ๋ค.

- ์์ธ๊ฐ ํฐ์ง๋ฉด ๋ชจ๋ GlobalExceptionHandler์ ํตํ๊ฒ ๋ง๋ค์๋ค.

@RestControllerAdvice
RestControllerAdvice, ControllerAdivce๋ ์ ์ญ์ผ๋ก ExceptionHandler๋ฅผ ์ ์ฉํด ์ค๋ค. ์คํ๋ง์ 4๊ฐ์ ์ฐ์ ์์๋ก ์ฐ์ ์ฒ๋ฆฌ ํ๋ ๊ธฐ๋ฅ์ด ์๋ค. ๊ทธ์ค์ @ExceptionHandler๋ ์ํ๋ Exception ํด๋์ค๋ค์ ์์ฑ์ผ๋ก ๋ฐ์ ์ฒ๋ฆฌํ ์์ธ๋ฅผ ์ง์ ํ ์ ์๋ค.
- ์์ธ๋ฅผ ์์ํ ์ ์๋ ๋ถ๋ถ๋ค์ ๋ชจ๋ RestApiException์ ์์ธ๋ก ๋์ง๋ฉฐ ์์ธ๋ฉ์ธ์ง๋ฅผ Enum์ผ๋ก ๋ง๋ค์ด ๋ณด๋ด์ค๋ค.

front์์๋ ์์ธ๊ฐ ํฐ์ง ๊ฒฝ์ฐ result.data ์์์ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์๊ณ , status๊ฐ 200์ด ์๋ ๊ฒฝ์ฐ๋ก ๋ถ๊ธฐ์ฒ๋ฆฌ ํด์ ๋ก์ง์ ๋ถ๋ฆฌํด ์ฌ์ฉํ ์ ์๋ค.
2. ์์ฌ์ด ์
FRONT์์ API๋ฅผ ํธ์ถ ํ์ ๋ ์ค๋ฅ๊ฐ ๋๋ค๊ณ ํด๋ ์๋ฌ๋ฅผ ๊ทธ๋๋ก ํ์ถํ ์๋ ์์๋ค.
๋ ๊ฐ์ง์ ์ค ํ๋์ ์ ํ์ ๊ณ ๋ฏผํ๋ค.
- ์์ธ ์ด์ ์ ๋ํ status์ Message ์๋ต (ex. ๊ฐ์ด ์ ๋ชป ๋์์ต๋๋ค.)
- ์์ธ ์ด์ ๊ฐ ์๋ status์ ๊ฐ๋ฐ์๊ฐ ๊ณตํต์ผ๋ก ๋ง๋ ์๋ฌ์ฝ๋ ์๋ต (ex. W01, W02.. ๋ฑ )
→ 1๋ฒ์ผ๋ก ์งํํ๋ค. React.js ์์ Alert์ผ๋ก ๋์ฐ๋ ์์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ข๋ค๊ณ ์๊ฐ → ํ์ง๋ง ์ฌ๋ฌ ๊ณณ์์ ํด๋น API๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ์ค๋ฅ์ ์ด์ ๋ ์ธ๋ถ์์ ์๊ฒ ๋๋ฉด ์๋๋ค. ์ค์ง ๊ฐ๋ฐ์๋ง ๊ทธ ๋ด์ฉ์ ํ์ ํด์ผ ํ๋ค → ๊ฐ๋ฐ์ ๋คํ๊ณ ๋์ ์ ๋ฐฐ์๊ฒ ํผ๋๋ฐฑ ๋ฐ์๋ ๋ถ๋ถ → ์ ์ฅ ์์ฝ๋ค. ๋ฉ์ธ์ง๋ฅผ ์๋ฌ์ฝ๋๋ก ๋ณ๊ฒฝ ์งํ ํ์
FRONT ๋จ( ์์คํ์ธ)
ํฅ์๋ ์
๊ฒ์๊ธ ๋ฑ๋ก ์๋ ํฅ์๊ฒ์๊ธ ๋ฑ๋ก ๊ฐํธํ UI ์ธํฐํ์ด์ค ์ ๊ณต
์ฒซ React.js๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ง์ด ํค๋งธ๋ค. ์ด ์๊ฐ์ ๋ฐฑ์๋ ๊ณต๋ถ๋ฅผ ๋ ํ ๊น ์ถ์์ง๋ง, ํ๋ก ํธ ๊ฐ๋ฐ๋ ์์์ผ ์ค๋ฌด์์ ์ํต์ด ์ ๋ ๊ฑฐ๋ผ๋ ์๊ฐ์ ๊ณ์ํ๋ค. ๊ธฐ๊ฐ์ด ์งง์๊ธฐ์ ๊น์ด ๊ณต๋ถํ์ง ๋ชปํ๊ณ , chatGPT์ ๋์์ ๋ง์ด ๋ฐ์ผ๋ฉฐ ํ๋ก ํธ ์ ๋ฐ์ ์งํํ๋ค.
1. React.js ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
return(
<div class="wrapper">
<UserHead />
<Header />
<Routes>
<Route path="/" element={<Main /> } />
<Route path="/work/view/:id" element={<WorkView /> } />
<Route path="/work/init" element={<WorkList /> } />
<Route path="/about/init" element={<About /> } />
<Route path="/contact/init" element={<Contact /> } />
</Routes>
<Footer />
</div>
)
๊ด๋ฆฌ์์ ์ฌ์ฉ์ ํ๋ฉด์ ๋๋๊ธฐ ๋๋ฌธ์ Route,Helmet๋ ์ฐพ์๋ณด๋ฉฐ ๊ณต๋ถํ๋ฉฐ ํ ๋ ํ ๋ ์งํ → Route๋ก url path์ ๋๋ ์ ์๊ณ , Helmet์ผ๋ก url path์ ๋ฐ๋ฅธ html head์ ์กฐ์ ์ ๋ฐฐ์ ๋ค.



์ด๋ฏธ์ง ํ๊ฐ ๋น ImageUploadBox ํ ๊ฐ
ํนํ Work ๊ฒ์ํ์ ๋ฑ๋กํผ์ ๋๋๊ธฐ ์ด๋ ค์ ๋ค.
→ ์ ํ ๋ณ๋ก ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ชจ์์ ๋ฃ์ด์ผ ํ๊ธฐ์ ๋์ ํ ๊ณตํต์ผ๋ก ์ก์ ์๊ฐ ์์๋ค(ImageUpload1,2 ๋ฑ)
→ ๊ทธ๋์ ๊ฐ๊ฐ ํ ํ๋ฆฟ์ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ์งํ
→ ๋ค๋ง ์ด๋ฏธ์ง์ ๋ํด์๋ ImageUploadBox๋ผ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด ์ฌ์ง 1๊ฐ์ ๋ํด์๋ง ๋ฑ๋ก, ์ญ์ ๋ฅผ ์ฌ์ฉํ๋ค.
2. Work ๋ฑ๋ก UI ๊ฐ์
OLD


NEW

- OLD : ์ ๊ณตํด ์ค ๋งค๋ด์ผ pdf๋ฅผ ๋ณด๊ณ ์ฌ๋ฆผ
- NEW : ํ ํ๋ฆฟ ๋ชจ์๋๋ก ์ด๋ฏธ์ง ์ ๋ก๋ ์ ๊ณต
์ด์ด์ง๋ ๋ด์ฉ์ผ๋ก ๊ณ ๊ฐ์ Work ๊ฒ์๊ธ์ ์ฌ๋ฆฌ๊ธฐ ํ๋ค๋ค๊ณ ํ๋ค.. OLD์ ์ฌ์ง์ฒ๋ผ ํ ํ๋ฆฟ์ ์์ ๋กญ๊ฒ ์ฌ์ฉํ๊ธฐ ํ๋ค์๋ค. ๋ณ๊ฒฝ๋ UI์ ๊ธฐ๋ฅ์ผ๋ก ์ธํด ๋ ์ด์ ๋งค๋ด์ผ pdf๊ฐ ํ์ ์์ด์ก๋ค. ๊ณ ๊ฐ๋ ํฌ๊ฒ ๋ง์กฑํ๋ค.
์ด๋ฏธ์ง ์ ์ฅ๋ก์ง ๋ณ๊ฒฝ
- form ์์ฑ ํ ๋ฑ๋ก ๋ฒํผ ํด๋ฆญ์ผ๋ก ์ ์ฅ → ์ฉ๋์ด ํฐ ์ด๋ฏธ์ง ํ์ผ์ ๋ค๋์ผ๋ก ์ ์ฅํ๊ธฐ์ ์๋๊ฐ ๋๋ ค ๋ฑ๋ก ๋ฒํผ ํด๋ฆญ ํ ํ์ฐธ์ ๊ธฐ๋ค๋ ค์ผ ํ๋ค. → → ์ด๋ฏธ์ง๋ฅผ ๋๋๊ทธํ์ฌ ๋ฃ์ผ๋ฉด 1์ฅ์ฉ ์ ์ฅ์ผ๋ก ๊ฐ์ → ๊ธฐ๋ค๋ฆด ํ์ ์์ด back์์ ์์๋๋ก ์ฒ๋ฆฌ๋์ด ์๋ ๊ฐ์
์์ฌ์ด ์
- ์ฌ์ ํ gif๋ฅผ ๋ถ๋ฌ์ค๋ ์๋๊ฐ ๋๋ฆฌ๋ค. ์๋ ๊ฐ์ ์ ์ํด AWS S3 ๋์ ์ด ์๊ธํจ์ผ๋ก ๊ณ ๊ฐ๊ณผ ํ์๊ฐ ํ์
- React.js์ ๋ํ ์ค๊ณ๊ฐ ์กฐ๊ธ ์์ฝ๋ค. ํด๋ ๊ตฌ์กฐ๋ฅผ url์ ๋ง์ถ๋ ๊ฒ ์ข์ ๊ฐ๋ฐ์ด๋ผ๊ณ ํ๋ค. ๋ค์์ ์ฐธ๊ณ ํ์
- ๊ธฐ์กด DB ๊ตฌ์กฐ๋ก ํ์ผ์ฒจ๋ถ๋ ํ ๊ฐ์ ํ ์ด๋ธ์์ ์ฒ๋ฆฌ
→ ํฐ ํ๋ก์ ํธ๊ฐ ๋ ์ผ์ ์์ง๋ง, ๋์ค์ ์๋น์ค๋ฅผ ๋ง๋ค ๋์ ๊ท๋ชจ๋ฅผ ๋ณด๊ณ ์ ํ์ ์ํด์ผ ํ ๊ฒ ๊ฐ๋ค.
→ ํ์ผ ํ ์ด๋ธ์ ์ฌ๋ฌ ํ ์ด๋ธ์์ ์ฐ๋ค ๋ณด๋, ํธ๋ํฝ ์ฆ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ ์ ์๊ณ , entity๋ฅผ ์ฌ์ฉํ๋ JPA๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ณต์ก์ฑ์ด ์ฌ๋ผ๊ฐ๋ค.
→ ๋ง์ฝ ์ ๋ง ํฐ ๊ท๋ชจ์์ CQRS ๊ธฐ๋ฒ ๊ฐ์ ๊ฒ์ ์ธ ๊ฒฝ์ฐ ํ ์ด๋ธ ๋ถ๋ฆฌ์๋ ๋ฌธ์ ๊ฐ ์์ ๊ฒ ๊ฐ๋ค. ์์ ๋ฐ๋ก ์ฌ์ฉํ๋ ๊ฒ ์ฌ๋ฌ๋ชจ๋ก ์ข์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ๋๋ด๋ฉด์ JPA์ Spring์ ๋ ์ดํดํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด ๋ณผ์๋ก ๊ณต๋ถํด์ผ ํ ์ ๋ ๋ง๊ณ ์ฌ์ฉํด๋ณด๊ณ ์ถ์ ๊ธฐ์ ์ด ๋์ด๋๋ค.
'๊ฐ๋ฐ์ผ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] ์นดํ ๊ณ ๋ฆฌ ๋ฉ๋ด active ํ์ (1) | 2024.04.26 |
---|---|
amazon S3 ์ฐ๊ฒฐ ํด๋ณด๊ธฐ (0) | 2024.04.22 |
๊ฒฐ๊ตญ ์ทจ์ง์ ์ฑ๊ณต(?)์ ํ๋ค. (1) | 2021.05.21 |
๊ฑฐ์ ํ๋ฌ๊ฐ ์๋ฐ๋ฟ์๊ธฐ์ค (2021.12.09) (0) | 2021.05.21 |
jsp๊ณผ ์๋ธ๋ฆฟ ์ฌ์ด๊ฐ์๋ ์๊ตฌ๋(2021.11.13) (0) | 2021.05.20 |
- Total
- Today
- Yesterday
- ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ญ๋
- ํฅํดํ๋ฌ์ค๋ฐฑ์๋
- ์ธํฐ์ ํฐ
- ํฅํด99
- ํญํดํ๋ฌ์ค
- ArgumentResolver
- SpringBoot
- Java
- ํฅํดํ๋ฌ์ค
- hypertexttransferprotocol
- ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๊ณต๋ถ
- ์คํ๋ง๊ณต๋ถ
- filter
- HTTP
- ํญํด99
- BindingResult
- ์์ธ์ฒ๋ฆฌ
- thymleaf
- jpa api
- ์ปจํธ
- JPA
- react์คํ
- React
- ์คํ๋ง๋ถํธ
- ๋ก๊ทธ์ธ
- exception
- rejectValue
- reject
- Intercepter
- ๋ฆฌํฐ๋ด
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |