
๋น๋ฐ๋ฒํธ๋ ์ ์ธ์ผ์ ์์ , ์ญ์ ์ -> ์ ํํ ์ผ์ ์ ๋น๋ฐ๋ฒํธ๊ฐ ์์ฒญ ํ๋ ๋น๋ฐ๋ฒํธ์ ์ผ์นํ ๊ฒฝ์ฐ ๊ฐ๋ฅ
JDBC๋ฅผ ์ฌ์ฉํด์ ๊ฐ๋ฐJPA ์ฌ์ฉ์ด ์๋ JDBC ์ฌ์ฉEntity์ ๊ทธ๋๋ก ๋ฐํํ์ง ์๊ณ DTO์ ๋ด์์ ๋ฐํ3 Layer Architecture์ ๋ฐ๋ผ ๊ฐ Layer ๋ชฉ์ ์ ์๋ง๊ฒ ๊ฐ๋ฐ๐ญ API ๋ช ์ธ์
์ผ์ ์์ฑ(์ผ์ ์์ฑํ๊ธฐ)
์ผ์ ์์ฑ ์ ํฌํจ๋์ด์ผํ ๋ฐ์ดํฐ
ํ ์ผ, ์์ฑ์๋ช
, ๋น๋ฐ๋ฒํธ, ์์ฑ/์์ ์ผ
์์ฑ/์์ ์ผ์ ๋ ์ง์ ์๊ฐ ๋ชจ๋ ํฌํจํ ์ํ
๊ฐ ์ผ์ ์ ๊ณ ์ ์๋ณ์(ID)๋ฅผ ์๋์ผ๋ก ์์ฑํด์ ๊ด๋ฆฌ
์ต์ด ์ ๋ ฅ์ ์์ ์ผ์ ์์ฑ์ผ๊ณผ ๋์ผ
์ ์ฒด ์ผ์ ์กฐํ (๋ฑ๋ก๋ ์ผ์ ๋ถ๋ฌ์ค๊ธฐ)
์กฐ๊ฑด
์์ ์ผ (ํ์ : YYYY-MM-DD)
์์ ์ผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
์ ํ ์ผ์ ์กฐํ(์ ํํ ์ผ์ ์ ๋ณด ๋ถ๋ฌ์ค๊ธฐ)
์ ํํ ์ผ์ ๋จ๊ฑด์ ์ ๋ณด ์กฐํ
์ผ์ ์ ๊ณ ์ ์๋ณ์(ID)๋ฅผ ์ฌ์ฉํ์ฌ ์กฐํ
์ผ์ ์์ ๋ฐ ์ญ์
์ ํํ ์ผ์ ์์
์ ํํ ์ผ์ ๋ด์ฉ ์ค ํ ์ผ, ์์ฑ์๋ช
๋ง ์์ ๊ฐ๋ฅ
์์ฑ์ผ์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉด ์์ ์ผ์ ์์ ์๋ฃ ์ ์์ ํ ์์ ์ผ๋ก ๋ณ๊ฒฝ
์ ํํ ์ผ์ ์ญ์
๋น๋ฐ๋ฒํธ๋ฅผ ํจ๊ป ์ ๋ฌ๋ฌธ์
์ด๊ธฐ ์ธํ ์ ์ด๋ ค์์ ๋๋
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐํ๋ ๋ถ๋ถ
JDBC ๋ฌธ๋ฒ ํ์ฉ
๋ฌธ์
ํด๊ฒฐ
๋ฌธ์
์ผ์ ์์ฑ ์ ์์ฑ์ผ๊ณผ ์์ ์ผ ์๋ ์์ฑ๊ณผ ํ์ ์ค์ ์ ์ด๋ ค์์ด ์์์
์์ฑ์ผ๊ณผ ์์ ์ผ ํ์
์ ๋ฌธ์ JDBC ์ฌ์ฉ์ ์ด๋ ค์ ๋๋
๋น๋ฐ๋ฒํธ ์กฐํ ๋ถ๊ฐ
3Layer Architecture ์ญํ ์ ๋ง๊ฒ ๋ถ๋ฆฌ
์ ์ฒด ์กฐํ (์์ฑ์, ์์ ์ผ) ์ฌ๋ถ
ํด๊ฒฐ
์๋์์ฑ์ ํ๊ธฐ ์ํด LocalDateTime.now() ๋ฉ์๋ ํ์ฉ
RequestDto๋ ๋ฐ๋ก entity๋ก ๋ณํ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ LocalDateTime ํ์
์ผ๋ก ์ค์
ResponseDto๋ ์๋ตํ ๋ ํํ๋ฅผ ๋ณ๊ฒฝํด์ผํ๊ธฐ ๋๋ฌธ์ DateTimeFormatter๋ฅผ ์ฌ์ฉํ๋ฉฐ String ํ์
์ผ๋ก ์ค์ ํ์ฌ ์ถ๋ ฅ
JDBC ๊ฐ์์ ๋ฃ๊ณ ๊ฐ์ ์๋ฃ๋ฅผ ์์ฉํ์ฌ ์ฌ์ฉ
JDBC Template ๋ฉ์๋ ์ฌ์ฉ๋ฒ์ ๋ฐ๋ก ๊ฒ์ํ์ฌ ์ฌ์ฉ
jdbcTemplate.update() : JDBC์์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์ ์ ํ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋
jdbcTemplate.queryForObject() : ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉ
jdbcTemplate.query() : ์ฌ๋ฌ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉ (๋ฆฌ์คํธ ํํ๋ก ์กฐํ)
BeanPropertyRowMapper() : SQL ์ฟผ๋ฆฌ๋ก ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ DTO ๊ฐ์ฒด๋ก "๋งคํ"ํด์ฃผ๋ ๋งคํผ
์ฒ์์๋ ๋น๋ฐ๋ฒํธ null๋ก ์ฒ๋ฆฌํ์๋ค๊ฐ ResponseDto๋ฅผ ์์ฑํ์ฌ ํ๋๊ฐ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ง๋ค์ง ์๊ณ ์๋ตํ ๋ ์ฌ์ฉ
Service,Repository ์ธํฐํ์ด์ค ์์ฑ ํ ๊ตฌํ ํด๋์ค์ Controller, RequestDto,ResponseDto ๊ฐ์ ์ญํ ์ ๋๋์ด ์ฑ ์์ ๋ถํ
@RequestParam ์ฌ์ฉ ํ JDBC์์ ์ฌ์ฉ