๋ ์ค๋ฅด๋ ๋์ธ, ์ฝํ๋ฆฐ ๋ฐฑ์๋! ๐ฉโ๐ป
์๋ฐ + ์คํ๋ง๋ถํธ ๋ฆฌํฉํ ๋ง์ผ๋ก ๋ฐฐ์๋ณด์ธ์.
์ง๊ธ, ์ ์ฝํ๋ฆฐ(Kotlin)์ผ๊น์?
์ฝ๊ณ ๊ฐ๊ฒฐํ
์ฝ๋
ํ์ฐํ ์ข์์ง
Null ์์ ์ฑ
๊ธฐ์กด ์๋ฐ์์
์๋ฒฝ ํธํ
์ด๋ฏธ ๋ค์นด๋ผ์ฟ ๋ฐฐ๋ ์ฝํ๋ฆฐ ๋์
์ค!
์๋ฐ๋ฅผ ๋์ฒดํ ๋งค๋ ฅ์ ์ธ ์๋ฒ ๊ฐ๋ฐ ์ธ์ด๋ก ์ฝํ๋ฆฐ์ด ๋ ์ค๋ฅด๊ณ ์์ต๋๋ค.
์ด ๊ฐ์์์๋ ๐ฅ
Java + Spring Boot๋ก ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง ๋์ ๊ด๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์
์ Kotlin + Spring Boot๋ก ์์ ํ ๋ฆฌํฉํ ๋งํฉ๋๋ค. ๋ชจ๋ ๋ฆฌํฉํ ๋ง์ด ๋๋๋ฉด ๋ค์ ์ธ ๊ฐ์ง ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ๊ณผ ํ ๊ฐ์ง ๊ธฐ์ ์ ์๊ตฌ์ฌํญ์ ์ฝํ๋ฆฐ ์๋ฒ ์์ ์ถ๊ฐ๋ก ๊ตฌํํด ๋ด
๋๋ค.
์ด๋ฌํ ๊ณผ์ ์ ํตํด ์ค๊ณ ๋ฐ ๊ตฌํ ๊ด์ ์ ํ์ํ ๋ค์ํ ๊ณ ๋ฏผ์ ํด๋ณผ ์ ์๊ณ , ์ฌ๋ฌ ๋ฐฉ๋ฒ์ Trade-Off ๋ฐ ์ฅ๋จ์ ๊ณผ ์ถ๊ฐ์ ์ธ ๊ธฐ์ ์ ๋ํด ๋ฐฐ์ธ ์ ์์ต๋๋ค. ์์๋๊ฐ๊ณ ์ถ์ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ผ๋ฉด ํจ๊ป ๋์ ํด๋ด
์๋ค!
๊ฐ์์์ ๋์ ํ๋ ์๊ตฌ์ฌํญ 4-Step โ
์ฒซ ๋ฒ์งธ ์ถ๊ฐ ์๊ตฌ์ฌํญ
์ฑ
๋ฑ๋ก ์ ๋ถ์ผ๋ฅผ ๊ตฌ๋ถ, ์ ํํ ์ ์๋๋ก ํฉ๋๋ค.
๋ ๋ฒ์งธ ์ถ๊ฐ ์๊ตฌ์ฌํญ
์ ์ ๋์ถ ํํฉ ๋ฐ ๊ธฐ๋ก ์กฐํ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
์ธ ๋ฒ์งธ ์ถ๊ฐ ์๊ตฌ์ฌํญ
ํ์ฌ ๋์ฌ ์ค์ธ ์ฑ
, ๋ฑ๋ก๋ ์ฑ
์ ๋ํ ํต๊ณ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
๋ค ๋ฒ์งธ ์ถ๊ฐ ์๊ตฌ์ฌํญ
JPQL์ ๋์ฒดํ์ฌ QueryDSL์ ์ ์ฉํด ๋ด
๋๋ค.
์ด๋ฐ ๋ถ๋ค๊ป
์ถ์ฒํฉ๋๋ค ๐ฉโ๐ป
- โ
Java + Spring Boot + JPA๋ก ๋งค์ฐ ๊ฐ๋จํ CRUD API๋ฅผ ํ ๋ฒ ์ ๋ ๋ง๋ค์ด๋ณด์ ๋ถ!
- โ
Kotlin ๊ธฐ์ด ๋ฌธ๋ฒ์ ์๊ณ ๊ณ์ ๋ถ!
์๋ฒ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ถฐ์ผ ํ ์ง์๊ณผ ๊ธฐ์ ์ ์ ๋ง ๋ค์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋ฐ์ ์ธ ๊ฐ์์์๋ โํน์ ์ฃผ์ โ๋ฅผ ์ง์คํด์ ๋ค๋ฃจ๊ณ ์์ด ์ด๋ ๋ถ๋ถ์ ์ญ๋์ ๋ค๋ฃจ๊ณ ์๋์ง, ์ถ๊ฐ๋ก ์ต๋ํด์ผ ํ๋ ์ญ๋์ ๋ฌด์์ธ์ง ํ์
ํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ๋ณธ ๊ฐ์์์๋ ๊ฐ์๋ฅผ ๋ฃ๊ธฐ ์ํด ํ์์ ์ธ ์ ์ ์ง์์ ์ ์ธํ๊ณ ๋ ๋ชจ๋ ๊ฐ์ ๋ด์ฉ์ ๋
น์ผ ์ ์๋๋ก ๋
ธ๋ ฅํ์์ต๋๋ค.
ํฅํ ๋ก๋๋งต์ ์ถ๊ฐ๋๋ ๊ฐ์์์๋ ์ด์ ๊ฐ์์ ๋ด์ฉ์ ์ค๋ณตํด์ ๋ด์ง๋ ์๋, ์ด์ ๊ฐ์์์ ๋ค๋ฃฌ ์ ์ด ์๋ ๋ด์ฉ์ ์ฒ์๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์ค๋ช
ํ ์ ์๋๋ก ๊ตฌ์ฑํ ์์ ์
๋๋ค.
๋ณด๋ค ์์ธํ ์ด์ผ๊ธฐ๋ ๋ฌด๋ฃ๋ก ์ด๋ ค ์๋ โ๊ฐ์ ์๊ฐ ์์โ์ ํ์ธํด์ฃผ์ธ์~! ๐
์ปค๋ฆฌํ๋ผ์
ํ์ธํด๋ณด์ธ์ ๐
Section #1.
Kotlin Spring Junit5
- Kotlin์ ์ฌ์ฉํ๊ธฐ ์ํด ํ์ํ ์ค์ ๋ฐฉ๋ฒ์ ์์๋ด
๋๋ค.
- ํ
์คํธ๋ ๋ฌด์์ด๊ณ , ์ ์ค์ํ์ง ์ดํด๋ด
๋๋ค.
- Junit5์ ๊ธฐ์ด ์ฌ์ฉ๋ฒ์ ์ตํ๊ณ , Junit5์ Spring Boot๋ฅผ ํจ๊ป ์ฌ์ฉํด ํ
์คํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
- ๋์ ๊ด๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์
API์ ๋ํ ํ
์คํธ๋ฅผ ์์ฑํด ๋ด
๋๋ค.
Section #2.
Kotlin Spring JPA (1)
- Java Spring Boot๋ฅผ Kotlin Spring Boot๋ก ๋ฆฌํฉํ ๋งํ๋ฉฐ ๋ค์ํ ๋ฆฌํฉํ ๋ง ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค.
- Kotlin + Spring + JPA๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ์ฃผ์ํ ์ ์ ์์๋ด
๋๋ค.
- Spring Application์์ Kotlin์ ์ธ์ด์ ํน์ฑ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
Section #3.
Kotlin Spring JPA (2)
- Type, Status ๋ฑ์ ์๋ฒ์์ ๊ด๋ฆฌํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ๊ณผ ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ ์ดํด๋ด
๋๋ค.
- Text Fixture์ ํ์์ฑ๊ณผ ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
- Kotlin์์ Enum + JPA + Spring Boot๋ฅผ ํ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์๋ด
๋๋ค.
Section #4.
Kotlin Spring JPA SQL
- ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ์์น์ ๊ดํ ๊ณ ๋ฏผ๊ณผ, ๊ฐ๊ฐ์ ์ ํ์ ๋ฐ๋ฅธ ์ฅ๋จ์ ์ ์์๋ด
๋๋ค.
- ๋ณต์กํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค.
- SQL์ inner join, left join์ ์ดํดํ๊ณ , N + 1 ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด fetch join์ ์ฌ์ฉํด ๋ด
๋๋ค.
Section #5.
Kotlin Spring SQL
- SQL์ ๋ค์ํ ๊ธฐ๋ฅ์ ์ดํดํ๊ณ , ๊ฐ๊ฒฐํ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ ์ต์ํด์ ธ ๋ด
๋๋ค.
- ๋์ผํ ๊ธฐ๋ฅ์ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ DB๋ก ๊ตฌํํด ๋ณด๊ณ , ํน์ง๊ณผ ์ฅ๋จ์ ์ ๋ํด ์ดํดํฉ๋๋ค.
Section #6.
Kotlin Spring QueryDSL
- JPQL๊ณผ QueryDSL์ ์ฅ๋จ์ ์ ์์๋ด
๋๋ค.
- QueryDSL์ Kotlin + Spring Boot์ ํจ๊ป ์ดํดํ๊ณ , 2๊ฐ์ง ๋ฐฉ์์ ์ฅ๋จ์ ์ ์ดํดํฉ๋๋ค.
- QueryDSL์ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ์ตํ๋๋ค.
- QueryDSL์ ์ฌ์ฉํด ๊ธฐ์กด Repository๋ฅผ ๋ฆฌํฉํ ๋งํด๋ด
๋๋ค.
์๊ฐ์ ์ฌ๋ฌ๋ถ์ ์ํด ์ค๋นํ
์ด ๊ฐ์๋ง์ ํค ํฌ์ธํธ ๐
Point 1
๋ฌดํ ๋ณต์ต์ ์ํ ๊ฐ์ ์๋ฃ
๊ฐ์ ๋ด์ฉ์ ์๋ฒฝํ๊ฒ ์ ๋ฆฌํ 142ํ์ด์ง ๋ถ๋์ ํธ๋๋ถ๊ณผ 468ํ์ด์ง ๋ถ๋์ PPT๋ฅผ ๋๋ฆฝ๋๋ค.
Point 2
์๋ฒ ๊ฐ๋ฐ์ ์ง์คํ์ธ์
์๋ฒ ๊ฐ๋ฐ์๋ง ์ง์คํ ์ ์๋๋ก ๋์ ๊ด๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ์น UI๋ฅผ ์ ๊ณตํด๋๋ฆฝ๋๋ค.
Point 3
์ดํด๋ฅผ ๋๋ ๊ผผ๊ผผํ ์ค๋ช
๊ฐ์ ๋ด์ฉ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ๋ค์ํ ์๊ฐ ์๋ฃ๋ฅผ ์ค๋นํ์ต๋๋ค!
Point 4
์ค์ ์๋ฒ ๊ฐ๋ฐ ๋ ๋ฒจ ์
!
์ค์ตํ ์์
์ ๊ฑธ๋ง๊ฒ ํจ๊ป ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๋ฆฌํฉํ ๋ง์ ๋ฌผ๋ก ์ถ๊ฐ ์๊ตฌ์ฌํญ ๊ตฌํ๊น์ง ์์ฑํด ๋๊ฐ๋๋ค!
ํจ๊ป ๋ณด๋ฉด ์ข์ ๊ฐ์ ๐บ
ํ๊ท ๋ณ์ 5.0! ์์ํ ์๊ฐํ์ ํ์ธํด๋ณด์ธ์ ๐ฉ
์ด๋ฒ ๊ฐ์์์๋ Java + Spring Boot๊ฐ Kotlin + Spring Boot์์ ์ด๋ป๊ฒ ๋ณ๊ฒฝ๋๊ณ , ์ด๋ค ์๋ฏธ๋ฅผ ๊ฐ๋์ง ๊ผผ๊ผผํ๊ฒ ๋ด์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ ์ฑ๊ณต์ ์ธ ์ฝํ๋ฆฐ ์๋ฒ ๊ฐ๋ฐ ์
๋ฌธ์ ์์ํฉ๋๋ค! ๐ช