3์ 1์ฃผ์ฐจ ๋ด์ฉ ์ ๋ฆฌ [3/1 ~ 3/10] + ์ด์ ๋ด์ฉ
3์ 1์ฃผ์ฐจ์ ๋ค๋ฃฌ ๋ด์ฉ๋ค๊ณผ ๊ทธ ์ด์ ์ 2์์ ๋ค๋ค๋ ๋ด์ฉ์ ๋ํด ๋๋ต์ ์ธ ์ ๋ฆฌ๋ฅผ ํ๋ ค๊ณ ํ๋ค. ๋ฉด์ ์ค๋น๋ฅผ ํ๋๋ผ ์ ๋ฆฌํ๋๋ฐ ์กฐ๊ธ ์๊ฐ์ด ๊ฑธ๋ ธ๋ค. ๊ธฐ์ ๋ฉด์ ์์ ๋์ฌ๋งํ ๋ด์ฉ๋ค๋ก ๋ค๋ฃจ๊ณ ์์ฆ์ ๊ฑฐ์ ํ๋ก์ ํธ ์์ฃผ๋ก ์ง๋ฌธ์ ํ๋ค์ง๋ง ๊ธฐ๋ณธ์ ์ธ CS๋ ๋ชจ๋ ๊ฐ๋ฐ์๋ค์ด ์ค์ํ๋ค๊ณ ํ๋ค. ์ ์ ๋ฆฌ๋ฅผ ํด์ ๋ฉด์ ์ ๋์์ด ๋์์ผ๋ฉด ์ข๊ฒ ๋ค.
1. ์คํ๋ง์ด๋ ๋ฌด์์ธ๊ฐ์ ?
์๋ฐ ๊ธฐ๋ฐ์ ์น ํ๋ ์์ํฌ ์ ๋๋ค. ์๋ฐ๋ก ๋ค์ํ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํ ํ๋ก๊ทธ๋๋ฐ ํด์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
์คํ๋ง์ ํน์ง์๋ ํฌ๊ฒ 3๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ฒซ๋ฒ์งธ๋ก ์ ์ด์ ์ญ์ ์ ๋๋ค. ๊ฐ์ฒด์ ์์ฑ๋ถํฐ ์๋ฉธ๊น์ง ๊ฐ๋ฐ์๊ฐ ์๋ ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์ ์ด๊ถ์ ๊ฐ๊ณ ์๋ ๊ฒ ์ ๋๋ค.
๋๋ฒ์งธ๋ ์์กด์ฑ ์ฃผ์ ์ ๋๋ค. ํ๋ก๊ทธ๋จ์์ ๊ตฌ์ฑ ์์์ ์์กด ๊ด๊ณ๊ฐ ์์ค์ฝ๋ ๋ด๋ถ๊ฐ ์๋ ์ธ๋ถ์ ์ค์ ํ์ผ์ ํตํด ์ ์ ๋ฉ๋๋ค. ์ด๋ ์ฝ๋ ๊ฐ์ ์ฌ์ฌ์ฉ์ ๋์ด๊ณ ์์ค์ฝ๋๋ฅผ ๋ค์ํ ๊ณณ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถฅ๋๋ค.
์ธ๋ฒ์งธ๋ AOP์ ๋๋ค. ํฉ์ด์ง ๊ด์ฌ์ฌ๋ฅผ ๋ชจ๋ํ ํ๋ ๊ฒ ์ ๋๋ค. ์ฃผ๋ก ๋ก๊น ์ด๋ ํธ๋์ญ์ ์ ์ฌ์ฉํฉ๋๋ค. @Transactional์ AOP๊ฐ ์ ์ฉ๋์์ต๋๋ค.
- ๊ผฌ๋ฆฌ ์ง๋ฌธ
- ํ๋ ์์ํฌ๋ ๋ฌด์์ธ๊ฐ์? ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฐจ์ด์ ์ ์์๋์?
- ์ด ๋์ ์ฐจ์ด๋ ์ ์ด์ ํ๋ฆ์ ๋ํ ์ฃผ๋๊ถ์ ๋๊ฐ ๊ฐ๊ณ ์๋๋ ์ ๋๋ค. ํ๋ ์์ํฌ๋ ์ ์ด๊ถ์ ๊ฐ๊ณ ์์ง๋ง, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฐ๋ฐ์๊ฐ ๊ฐ๊ณ ์์ต๋๋ค.
- @Transactional์ ๋์์๋ฆฌ์ ๋ํด ์ค๋ช
ํด์ฃผ์ธ์.
- Transactional ์ด๋ ธํ ์ด์ ์ Proxy ๊ฐ์ฒด๋ฅผ ํตํด ๋์ํฉ๋๋ค. Target์ด ์์ํ๊ณ ์๋ ์ธํฐํ์ด์ค ๋๋ Target ๊ฐ์ฒด๋ฅผ ์์ํ Proxy ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฉฐ, Proxy ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด Target ๋ฉ์๋ ์ , ํ๋ก ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค. ๋ฐ๋ผ์ @Transactional์ด ์๋ ๋ฉ์๋์์ @Transactional์ด ์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด ํ๋ก์ ๊ฐ์ฒด๋ฅผ ํตํด ํธ๋์ญ์ ์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ผ ํฉ๋๋ค.
- Prxoy ๊ฐ์ฒด๋ ๋ฌด์ธ์ธ๊ฐ์?
- ์ด๋ค ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ ๋, ๊ฐ์ฒด๋ฅผ ์ง์ ์ ์ผ๋ก ์ฐธ์กฐํ๋ ๊ฒ์ด ์๋๋ผ, ํด๋น ๊ฐ์ฒด๋ฅผ ๋ํํ๋ ๊ฐ์ฒด๋ฅผ ํตํด ๋์๊ฐ์ฒด์ ์ ๊ทผํ๋ ๋ฐฉ์์ ๋๋ค. ์ฌ์ฉํ๋ ์ด์ ๋ ์๋ณธ ๊ฐ์ฒด์ ๋ํ ์ฝ๋ ์์ ์์ด, ๋ฐํ์ ์์ ์์ ํ๋ก์ ๊ฐ์ฒด๋ฅผ ํตํด ๋ถ๊ฐ์ ์ธ ์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด์์ ๋๋ค.
- AOP์ ๋ํด ์ค๋ช
ํด์ฃผ์ธ์.
- AOP๋ ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ํฉ์ด์ง ๊ด์ฌ์ฌ๋ฅผ ๋ชจ๋ํ ํ๋ ๊ฒ ์ ๋๋ค. AOP์ ์ฃผ์ ๊ฐ๋ ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
- Aspect : ํฉ์ด์ง ๊ด์ฌ์ฌ๋ฅผ ๋ชจ๋ํ ํ ๊ฒ ์ ๋๋ค.
- Target : Aspect๋ฅผ ์ ์ฉํ๋ ๊ณณ ์ ๋๋ค.
- Advice: ์ค์ง์ ์ธ ๋ถ๊ฐ๊ธฐ๋ฅ์ ๋ด์ ๊ตฌํ์ฒด์ ๋๋ค.
- JoinPoint: Advice๊ฐ ์ ์ฉ๋ ์์น, ์ง์ ์ง์ ๋ฑ ๋ค์ํ ์์ ์ ์ ์ฉํ๋ ๊ฒ ์ ๋๋ค.
- PointCut: JoinPoint์ ์์ธํ ์คํ์ ์ ์ํ ๊ฒ ์ ๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก Advice๊ฐ ์คํ๋ ์ง์ ์ ์ ํ ์ ์์ต๋๋ค.
- ์คํ๋ง ๋น์๋ง AOP๊ฐ ์ ์ฉ๊ฐ๋ฅํฉ๋๋ค.
2. ์๋ฐ์ ํน์ง์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
์๋ฐ๋ JVM๋ง ์ค์นํ๋ฉด ์ด์์ฒด์ ์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด์งํฅ์ธ์ด์ ํน์ง์ธ ์์, ์บก์ํ ๋คํ์ฑ์ด ์ ์ฉ๋ ์ธ์ด์ ๋๋ค. Garbage Collector๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ง์ ํ์ง ์์๋ ๋ฉ๋๋ค. ๋ํ ๋ฉํฐ์ฐ๋ ๋๋ฅผ ์ง์ํฉ๋๋ค.
- ๊ผฌ๋ฆฌ ์ง๋ฌธ
- ๊ฐ์ฒด์งํฅ์ธ์ด์ ํน์ง์ ๋ํด ์ค๋ช
ํด์ฃผ์ธ์.
- ๊ฐ์ฒด์งํฅ ์ธ์ด์ ํน์ง์ผ๋ก๋ ์ฒซ๋ฒ์งธ๋ก ์ถ์ํ๊ฐ ์์ต๋๋ค. ์ถ์ํ๋ ํ์ํ ๊ธฐ๋ฅ๋ค๋ง ๊ฐ์ ธ์ ๋จ์ํ ํ๋ ๊ฒ ์ ๋๋ค. ๋๋ฒ์งธ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ ๊ธฐ๋ฅ์ ๋ ธ์ถ์ํค์ง ์๋ ์บก์ํ ์ ๋๋ค. ์ธ๋ฒ์งธ๋ ์์์ฑ์ ๋๋ค. ์์์ด๋ ์์๊ฐ๋ ์ ํน์ง์ ํ์ ๊ฐ๋ ์ด ๋ฌผ๋ ค๋ฐ๋ ๊ฒ ์ ๋๋ค. ๋ง์ง๋ง์ ๋คํ์ฑ ์ ๋๋ค. ๋คํ์ฑ์ ๋ค์ํ ํํ๋ก ํํ์ด ๊ฐ๋ฅํ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
3. JVM์ ๋์ ์๋ฆฌ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
๊ฐ๋ฐ์๊ฐ ์๋ฐ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ java ํ์ผ์ ์๋ฐ ์ปดํ์ผ๋ฌ๊ฐ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ก ์ปดํ์ผํฉ๋๋ค. ์ปดํ์ผ ๋ ๋ฐ์ดํธ ์ฝ๋๋ฅผ JVM์ Class Loader์ ์ ๋ฌํฉ๋๋ค. Class Loader๋ ๋์ ๋ก๋ฉ์ ํตํด ํ์ํ ํด๋์ค๋ค์ ๋ก๋ฉ ๋ฐ ๋งํฌํ์ฌ Runtime Data Area์ ์ฌ๋ฆฝ๋๋ค. ์คํ ์์ง์ JVM ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ๋ฐ์ดํธ ์ฝ๋๋ค์ ๋ช ๋ น์ด ๋จ์๋ก ํ๋์ฉ ๊ฐ์ ธ์์ ์คํํฉ๋๋ค.
- ๊ผฌ๋ฆฌ ์ง๋ฌธ
- JVM์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ๋ํด ์ค๋ช
ํด์ฃผ์ธ์.
- JVM์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ ํฌ๊ฒ ๋ณด์์ ๋ Garbage Collector, Execution Engine(์คํ ์์ง), Class Loader(ํด๋์ค ๋ก๋), Runtime Data Area(๋ฐํ์ ๋ฐ์ดํฐ ์์ญ) 4๊ฐ์ง๋ก ๋๋ ์ ์์ต๋๋ค.
- Class Loader๋ JVM๋ด๋ก ํด๋์ค ํ์ผ์ ๋ก๋ํ๊ณ , ๋งํฌ๋ฅผ ํตํด ๋ฐฐ์นํ๋ ์์ ์ ์ํํ๋ ๋ชจ๋์ ๋๋ค. ๋ฐํ์ ์ ๋์ ์ผ๋ก ํด๋์ค๋ฅผ ๋ก๋ํฉ๋๋ค.
- Execution Engine์ ํด๋์ค ๋ก๋๋ฅผ ํตํด JVM ๋ด์ Runtime Data Area์ ๋ฐฐ์น๋ ๋ฐ์ดํธ ์ฝ๋๋ค์ ๋ช ๋ น์ด ๋จ์๋ก ์ฝ์ด์ ์คํํฉ๋๋ค.
- Garbage Collector๋ ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์์ฑ๋ ๊ฐ์ฒด๋ค ์ค ์ฐธ์กฐ๋์ง ์๋ ๊ฐ์ฒด๋ค์ ํ์ ํ ์ ๊ฑฐํ๋ ์ญํ ์ ํฉ๋๋ค.
- Runtime Data Area๋ JVM์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ผ๋ก ์๋ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํํ ๋ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ค์ ์ ์ฌํ๋ ์์ญ์ ๋๋ค. ์ด ์์ญ์ ํฌ๊ฒ Method Area, Heap Area, Stack Area, PC Register, Native Method Stack์ผ๋ก ๋๋์ด์ ธ ์์ต๋๋ค. Heap Area๋ new ํค์๋๋ก ์์ฑ๋ ๊ฐ์ฒด์ ๋ฐฐ์ด์ด ์์ฑ๋๋ ์์ญ์ ๋๋ค.
4. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ ๋ฌด์์ธ๊ฐ์ ?
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ์ทจ๊ธํ์ฌ ํ๋ก๊ทธ๋จ์ ๋ฐ์ํ ๊ฒ์ ๋๋ค. ๊ฐ์ฒด์ ๊ฐ์ฒด์ ์ํธ์์ฉ์ ํตํด ํ๋ก๊ทธ๋จ์ด ๋์ํฉ๋๋ค. OOP์ ํน์ง์ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๋๊ณ , ์ง๊ด์ ์ธ ์ฝ๋๋ถ์์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ฐ๋ฐ์๋๋ฅผ ํฅ์์ํค๊ณ ์์์ ํตํด ์ฅ์ ์ ๊ทน๋ํ ํ ์ ์์ต๋๋ค.
- ๊ผฌ๋ฆฌ ์ง๋ฌธ
- ๊ฐ์ฒด์งํฅ ์ค๊ณ์์น์ ๋ํด ์ค๋ช
ํด์ฃผ์ธ์.
- ๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น์๋ 5๊ฐ์ง๊ฐ ์์ต๋๋ค. ์ฒซ๋ฒ์งธ๋ก ํ๋์ ํด๋์ค๋ ๋จ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค๋ ๋จ์ผ ์ฑ ์ ์์น ์ ๋๋ค. ๋๋ฒ์งธ๋ ์ํํธ์จ์ด ์์๋ ํ์ฅ์๋ ์ด๋ ค์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค๋ ๊ฐ๋ฐฉ-ํ์ ์์น์ ๋๋ค. ์ธ๋ฒ์งธ๋ ํ๋ก๊ทธ๋จ ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ์ ์ ํ์ฑ์ ๊นจ๋จ๋ฆฌ์ง ์์ผ๋ฉด์ ํ์ ํ์ ์ ์ธ์คํด์ค๋ก ๋ฐ๊ฟ ์ ์์ด์ผ ํ๋ค๋ ๋ฆฌ์ค์ฝํ ์นํ ์์น์ ๋๋ค. ๋ค๋ฒ์งธ๋ ์ธํฐํ์ด์ค๋ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํด์ผ ํ๋ค๋ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น์ ๋๋ค. ๋ง์ง๋ง์ ์ถ์ํ์ ์์กดํด์ผ์ง ๊ตฌ์ฒดํ์ ์์กดํ๋ฉด ์๋๋ค๋ ์์กด๊ด๊ณ ์ญ์ ์์น ์ ๋๋ค.
- ๊ฐ์ฒด์ ํด๋์ค์ ์ฐจ์ด์ ๋ํด ์ค๋ช
ํด์ฃผ์ธ์.
- ๊ฐ์ฒด๋ ์์ ๊ณ ์ ์ ์์ฑ์ ๊ฐ์ง๋ ๋ฌผ๋ฆฌ์ , ์ถ์์ ์ธ ๋ชจ๋ ๋์์ ๋๋ค. ํด๋์ค๋ ๊ฐ์ฒด๋ค์ ์ํํธ์จ์ด ๋ด์์ ๊ตฌํํ๊ธฐ ์ํด ๋ง๋ ์ค๊ณ๋ ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ถ์ด๋นต์ ๋ง๋ค๊ธฐ ์ํ ํ์ ํด๋์ค์ด๊ณ ์ด ํ์ ํตํด ๋ง๋ ๋ถ์ด๋นต์ ๊ฐ์ฒด๊ฐ ๋๋ ๊ฒ ์ ๋๋ค. ์ธ์คํด์ค๋ฅผ ๋ํํ๋ ํฌ๊ด์ ์ธ ์๋ฏธ์ ๋๋ค.
- Overloading๊ณผ Overriding์ ์ฐจ์ด์ ?
- Overloading์ ๊ฐ์ ์ด๋ฆ์ ๋ฉ์๋๊ฐ ๋งค๊ฐ๋ณ์์ ํ์ ์ด ๋ค๋ฅด๊ฑฐ๋ ๊ฐ์๊ฐ ๋ค๋ฅธ๊ฒ์ด๊ณ , Overriding์ ์์ ํด๋์ค๋ฅผ ํ์์์ ์ฌ์ ์ ํ๋ ๊ฒ ์ ๋๋ค.
5. ์ธํฐํ์ด์ค๋ ๋ฌด์์ธ๊ฐ์ ?
์ธํฐํ์ด์ค๋ ์ผ์ข ์ ๋งค๊ฐ์ฒด์ ๋๋ค. 2๊ฐ ์ด์์ ์ฅ์น๋ ์ํํธ์จ์ด ์ฌ์ด์ ์ ๋ณด๋ ์ ํธ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ํฉ๋๋ค. ์ธํฐํ์ด์ค๋ ํ๋์จ์ด์ด๊ฑฐ๋ ์ํํธ์จ์ด๊ฐ ๋ ์๋ ์์ต๋๋ค.
'๐ CS [ComputerScience] > ๐ CS ๋ฉด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ [CS๋ฉด์ ] ์น ๋ฉด์ ์ง๋ฌธ [17] [TCP/UDP] (0) | 2024.03.12 |
---|---|
๐ [CS๋ฉด์ ] ์น ๋ฉด์ ์ง๋ฌธ [16] [์ด์์ฒด์ ] (0) | 2024.03.11 |
๐ [CS๋ฉด์ ] ์น ๋ฉด์ ์ง๋ฌธ [15] [JPA] (0) | 2024.03.09 |
๐ [CS๋ฉด์ ] ์น ๋ฉด์ ์ง๋ฌธ [14] [์๊ณ ๋ฆฌ์ฆ] (0) | 2024.03.08 |
๐ [CS๋ฉด์ ] ์น ๋ฉด์ ์ง๋ฌธ [13] [ Database ] (0) | 2024.03.07 |