์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ Spring ๊ด๋ จ ๊ณต๋ถ๋ฅผ ์ํ ์ ์ฅ์์
๋๋ค.
๐ ์ธํ๋ฐ "์ฐ์ํํ์ ๋ค ์ต์ฐ์ ๊ธฐ์ ์ด์ฌ ์ถ์ ๊น์ํ์ ์คํ๋ง ์์ ์ ๋ณต" ๋ก๋๋งต์ ๊ธฐ๋ฐ์ผ๋ก ํ์ตํฉ๋๋ค.
Spring ํ๋ก์ ํธ ์์์ ์ํ ํ์ต ๋ด์ฉ์ ์ ๋ฆฌํฉ๋๋ค.
๐ ์คํ๋ง ์ ๋ฌธ - ์ฝ๋๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ๋ถํธ, ์น MVC, DB ์ ๊ทผ ๊ธฐ์ (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- ํ๋ก์ ํธ ํ๊ฒฝ์ค์
- ์คํ๋ง ์น ๊ฐ๋ฐ ๊ธฐ์ด
- ํ์ ๊ด๋ฆฌ ์์ - ๋ฐฑ์๋ ๊ฐ๋ฐ
- ์คํ๋ง ๋น๊ณผ ์์กด๊ด๊ณ
- ํ์ ๊ด๋ฆฌ ์์ - ์น MVC ๊ฐ๋ฐ
- ์คํ๋ง DB ์ ๊ทผ ๊ธฐ์
- AOP
- ๋ค์์ผ๋ก
Spring์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ํ์ตํฉ๋๋ค.
๐ ์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ์คํ๋ง
- ์คํ๋ง ํต์ฌ ์๋ฆฌ ์ดํด1 - ์์ ๋ง๋ค๊ธฐ
- ์คํ๋ง ํต์ฌ ์๋ฆฌ ์ดํด2 - ๊ฐ์ฒด ์งํฅ ์๋ฆฌ ์ ์ฉ
- ์คํ๋ง ์ปจํ ์ด๋์ ์คํ๋ง ๋น
- ์ฑ๊ธํค ์ปจํ ์ด๋
- ์ปดํฌ๋ํธ ์ค์บ
- ์์กด๊ด๊ณ ์๋ ์ฃผ์
- ๋น ์๋ช ์ฃผ๊ธฐ ์ฝ๋ฐฑ
- ๋น ์ค์ฝํ
- ๋ค์์ผ๋ก
๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์์ ํ์ตํฉ๋๋ค.
๐ ๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์ (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- ์ธํฐ๋ท ๋คํธ์ํฌ
- URI์ ์น ๋ธ๋ผ์ฐ์ ์์ฒญ ํ๋ฆ
- HTTP ๊ธฐ๋ณธ
- HTTP ๋ฉ์๋
- HTTP ๋ฉ์๋ ํ์ฉ
- HTTP ์ํ์ฝ๋
- HTTP ํค๋ 1 - ์ผ๋ฐ ํค๋
- HTTP ํค๋ 2 - ์บ์์ ์กฐ๊ฑด๋ถ ์์ฒญ
- ๋ค์์ผ๋ก
Spring MVC์ ํต์ฌ ๊ฐ๋ ์ ํ์ตํฉ๋๋ค.
๐ ์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์ (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ดํด
- ์๋ธ๋ฆฟ
- ์๋ธ๋ฆฟ, JSP, MVC ํจํด
- MVC ํ๋ ์์ํฌ ๋ง๋ค๊ธฐ
- ์คํ๋ง MVC - ๊ตฌ์กฐ ์ดํด
- ์คํ๋ง MVC - ๊ธฐ๋ณธ ๊ธฐ๋ฅ
- ์คํ๋ง MVC - ์น ํ์ด์ง ๋ง๋ค๊ธฐ
- ๋ค์์ผ๋ก
Spring MVC๋ฅผ ํ์ฉํ ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ๊ธฐ์ ์ ํ์ตํฉ๋๋ค.
๐ ์คํ๋ง MVC 2ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํ์ฉ ๊ธฐ์ (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- ์๊ฐ
- ํ์๋ฆฌํ - ๊ธฐ๋ณธ ๊ธฐ๋ฅ
- ํ์๋ฆฌํ - ์คํ๋ง ํตํฉ๊ณผ ํผ
- ๋ฉ์์ง, ๊ตญ์ ํ
- ๊ฒ์ฆ 1 - Validation
- ๊ฒ์ฆ 2 - Bean Validation
- ๋ก๊ทธ์ธ ์ฒ๋ฆฌ 1 - ์ฟ ํค, ์ธ์
- ๋ก๊ทธ์ธ ์ฒ๋ฆฌ 2 - ํํฐ, ์ธํฐ์ ํฐ
- ์์ธ ์ฒ๋ฆฌ์ ์ค๋ฅ ํ์ด์ง
- API ์์ธ ์ฒ๋ฆฌ
- ์คํ๋ง ํ์ ์ปจ๋ฒํฐ
- ํ์ผ ์ ๋ก๋
- ๋ค์์ผ๋ก
Spring์์์ ๋ฐ์ดํฐ ์ ๊ทผ ํต์ฌ ์๋ฆฌ๋ฅผ ํ์ตํฉ๋๋ค.
๐ ์คํ๋ง DB 1ํธ - ๋ฐ์ดํฐ ์ ๊ทผ ํต์ฌ ์๋ฆฌ (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- JDBC ์ดํด
- ์ปค๋ฅ์ ํ๊ณผ ๋ฐ์ดํฐ์์ค ์ดํด
- ํธ๋์ญ์ ์ดํด
- ์คํ๋ง๊ณผ ๋ฌธ์ ํด๊ฒฐ - ํธ๋์ญ์
- ์๋ฐ ์์ธ ์ดํด
- ์คํ๋ง๊ณผ ๋ฌธ์ ํด๊ฒฐ - ์์ธ ์ฒ๋ฆฌ, ๋ฐ๋ณต
- ๋ค์์ผ๋ก
Spring์์ ๋ค์ํ ๋ฐ์ดํฐ ์ ๊ทผ ๊ธฐ์ ๊ณผ ํธ๋์ญ์ ์ ํ ๊ฐ๋ ์ ํ์ตํฉ๋๋ค.
๐ ์คํ๋ง DB 2ํธ - ๋ฐ์ดํฐ ์ ๊ทผ ํ์ฉ ๊ธฐ์ (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- ๋ฐ์ดํฐ ์ ๊ทผ ๊ธฐ์ - ์์
- ๋ฐ์ดํฐ ์ ๊ทผ ๊ธฐ์ - ์คํ๋ง JdbcTemplate
- ๋ฐ์ดํฐ ์ ๊ทผ ๊ธฐ์ - ํ ์คํธ
- ๋ฐ์ดํฐ ์ ๊ทผ ๊ธฐ์ - MyBatis
- ๋ฐ์ดํฐ ์ ๊ทผ ๊ธฐ์ - JPA
- ๋ฐ์ดํฐ ์ ๊ทผ ๊ธฐ์ - ์คํ๋ง ๋ฐ์ดํฐ JPA
- ๋ฐ์ดํฐ ์ ๊ทผ ๊ธฐ์ - Querydsl
- ๋ฐ์ดํฐ ์ ๊ทผ ๊ธฐ์ - ํ์ฉ ๋ฐฉ์
- ์คํ๋ง ํธ๋์ญ์ ์ดํด
- ์คํ๋ง ํธ๋์ญ์ ์ ํ1 - ๊ธฐ๋ณธ
- ์คํ๋ง ํธ๋์ญ์ ์ ํ2 - ํ์ฉ
์คํ๋ง์ ๊ณ ๊ธ ๊ฐ๋ ๊ณผ AOP, ํ๋ก์ ํจํด์ ํ์ตํฉ๋๋ค.
๐ ์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ณ ๊ธํธ (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- ์์ ๋ง๋ค๊ธฐ
- ์ฐ๋ ๋ ๋ก์ปฌ - ThreadLocal
- ํ ํ๋ฆฟ ๋ฉ์๋ ํจํด๊ณผ ์ฝ๋ฐฑ ํจํด
- ํ๋ก์ ํจํด๊ณผ ๋ฐ์ฝ๋ ์ดํฐ ํจํด
- ๋์ ํ๋ก์ ๊ธฐ์
- ์คํ๋ง์ด ์ง์ํ๋ ํ๋ก์
- ๋น ํ์ฒ๋ฆฌ๊ธฐ
- @Aspect AOP
- ์คํ๋ง AOP ๊ฐ๋
- ์คํ๋ง AOP ๊ตฌํ
- ์คํ๋ง AOP - ํฌ์ธํธ์ปท
- ์คํ๋ง AOP - ์ค์ ์์
- ์คํ๋ง AOP - ์ค๋ฌด ์ฃผ์์ฌํญ
์คํ๋ง ๋ถํธ์ ๊ตฌ์กฐ์ ํต์ฌ ์๋ฆฌ, ์ค๋ฌด์ ํ์ฉ๋๋ ์ค์ ๊ณผ ๋ชจ๋ํฐ๋ง ๊ธฐ์ ์ ํ์ตํฉ๋๋ค.
๐ ์คํ๋ง ๋ถํธ - ํต์ฌ ์๋ฆฌ์ ํ์ฉ (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- ์ค๋ฆฌ์ํ ์ด์
- ์คํ๋ง ๋ถํธ ์๊ฐ
- ์น ์๋ฒ์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋
- ์คํ๋ง ๋ถํธ์ ๋ด์ฅ ํฐ์บฃ
- ์คํ๋ง ๋ถํธ ์คํํฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ
- ์๋ ๊ตฌ์ฑ(Auto Configuration)
- ์ธ๋ถ์ค์ ๊ณผ ํ๋กํ1
- ์ธ๋ถ์ค์ ๊ณผ ํ๋กํ2
- ์ก์ธ์์ดํฐ
- ๋ง์ดํฌ๋ก๋ฏธํฐ, ํ๋ก๋ฉํ ์ฐ์ค, ๊ทธ๋ผํ๋
- ๋ชจ๋ํฐ๋ง ๋ฉํธ๋ฆญ ํ์ฉ
- ๋ค์์ผ๋ก
JPA์ ๊ธฐ๋ณธ ๊ฐ๋ ๋ถํฐ ์ฐ๊ด๊ด๊ณ ๋งคํ, ๊ฐ์ฒด์งํฅ ์ฟผ๋ฆฌ ์ธ์ด๊น์ง ํต์ฌ ๋ด์ฉ์ ํ์ตํฉ๋๋ค.
๐ ์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- ๊ฐ์ข ์๊ฐ
- JPA ์๊ฐ
- JPA ์์ํ๊ธฐ
- ์์์ฑ ๊ด๋ฆฌ - ๋ด๋ถ ๋์ ๋ฐฉ์
- ์ํฐํฐ ๋งคํ
- ์ฐ๊ด๊ด๊ณ ๋งคํ ๊ธฐ์ด
- ๋ค์ํ ์ฐ๊ด๊ด๊ณ ๋งคํ
- ๊ณ ๊ธ ๋งคํ
- ํ๋ก์์ ์ฐ๊ด๊ด๊ณ ๊ด๋ฆฌ
- ๊ฐ ํ์
- ๊ฐ์ฒด์งํฅ ์ฟผ๋ฆฌ ์ธ์ด1 - ๊ธฐ๋ณธ ๋ฌธ๋ฒ
- ๊ฐ์ฒด์งํฅ ์ฟผ๋ฆฌ ์ธ์ด2 - ์ค๊ธ ๋ฌธ๋ฒ
์คํ๋ง ๋ถํธ์ JPA๋ฅผ ํ์ฉํ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์ค์ ํ๋ก์ ํธ๋ฅผ ์งํํฉ๋๋ค.
๐ ์ค์ ! ์คํ๋ง ๋ถํธ์ JPA ํ์ฉ1 - ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- ๊ฐ์ข ์๊ฐ
- ํ๋ก์ ํธ ํ๊ฒฝ์ค์
- ๋๋ฉ์ธ ๋ถ์ ์ค๊ณ
- ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌํ ์ค๋น
- ํ์ ๋๋ฉ์ธ ๊ฐ๋ฐ
- ์ํ ๋๋ฉ์ธ ๊ฐ๋ฐ
- ์ฃผ๋ฌธ ๋๋ฉ์ธ ๊ฐ๋ฐ
- ์น ๊ณ์ธต ๊ฐ๋ฐ
API ๊ฐ๋ฐ๊ณผ ์ฑ๋ฅ ์ต์ ํ๊น์ง ์ค๋ฌด ์์ค์ JPA ํ์ฉ๋ฒ์ ์ตํ๋๋ค.
๐ ์ค์ ! ์คํ๋ง ๋ถํธ์ JPA ํ์ฉ2 - API ๊ฐ๋ฐ๊ณผ ์ฑ๋ฅ ์ต์ ํ (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- ๊ฐ์ข ์๊ฐ
- API ๊ฐ๋ฐ ๊ธฐ๋ณธ
- API ๊ฐ๋ฐ ๊ณ ๊ธ - ์ค๋น
- API ๊ฐ๋ฐ ๊ณ ๊ธ - ์ง์ฐ ๋ก๋ฉ๊ณผ ์กฐํ ์ฑ๋ฅ ์ต์ ํ
- API ๊ฐ๋ฐ ๊ณ ๊ธ - ์ปฌ๋ ์ ์กฐํ ์ต์ ํ
- API ๊ฐ๋ฐ ๊ณ ๊ธ - ์ค๋ฌด ํ์ ์ต์ ํ
- ๋ค์์ผ๋ก
์คํ๋ง ๋ฐ์ดํฐ JPA๋ฅผ ์ฌ์ฉํด CRUD, ์ฟผ๋ฆฌ ๋ฉ์๋, ํ์ฅ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค.
๐ ์ค์ ! ์คํ๋ง ๋ฐ์ดํฐ JPA (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- ์คํ๋ง ๋ฐ์ดํฐ JPA ์๊ฐ
- ํ๋ก์ ํธ ํ๊ฒฝ์ค์
- ์์ ๋๋ฉ์ธ ๋ชจ๋ธ
- ๊ณตํต ์ธํฐํ์ด์ค ๊ธฐ๋ฅ
- ์ฟผ๋ฆฌ ๋ฉ์๋ ๊ธฐ๋ฅ
- ํ์ฅ ๊ธฐ๋ฅ
- ์คํ๋ง ๋ฐ์ดํฐ JPA ๋ถ์
- ๋๋จธ์ง ๊ธฐ๋ฅ๋ค
Querydsl์ ํ์ฉํ ํ์ ์์ ์ฟผ๋ฆฌ ์์ฑ๊ณผ ์คํ๋ง ํตํฉ ๋ฐฉ๋ฒ์ ํ์ตํฉ๋๋ค.
๐ ์ค์ ! Querydsl (ํด๋ฆญํด์ ํผ์น๊ธฐ)
์ ์: ๊น์ํ
- Querydsl ์๊ฐ
- ํ๋ก์ ํธ ํ๊ฒฝ์ค์
- ์์ ๋๋ฉ์ธ ๋ชจ๋ธ
- ๊ธฐ๋ณธ ๋ฌธ๋ฒ
- ์ค๊ธ ๋ฌธ๋ฒ
- ์ค๋ฌด ํ์ฉ - ์์ JPA์ Querydsl
- ์ค๋ฌด ํ์ฉ - ์คํ๋ง ๋ฐ์ดํฐ JPA์ Querydsl
- ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํ๋ Querydsl ๊ธฐ๋ฅ