์คํ๋ง AOP๋?AOP์ ๊ฐ๋
AOP(Aspect-Oriented Programming, ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ)๋ ์ ํ๋ฆฌ์ผ์ด์
์ ํก๋จ ๊ด์ฌ์ฌ(Cross-Cutting Concerns)๋ฅผ ๋ชจ๋ํํ๊ธฐ ์ํ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์. ํก๋จ ๊ด์ฌ์ฌ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ๋ฌ ๋ถ๋ถ์์ ๊ณตํต์ ์ผ๋ก ๋ํ๋๋ ๊ธฐ๋ฅ์ผ๋ก, ๋ก๊น
, ๋ณด์, ํธ๋์ญ์
๊ด๋ฆฌ ๋ฑ์ด ํฌํจ๋จ. AOP์ ์ฅ์ ์ฝ๋ ์ค๋ณต ๊ฐ์: ๊ณตํต ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ์ฌ ์ฝ๋ ์ค๋ณต์ ์ค์ผ ์ ์์.์ ์ง๋ณด์์ฑ ํฅ์: ๊ณตํต ๊ธฐ๋ฅ์ด ๋ณ๊ฒฝ๋ ๋ ํด๋น ๊ธฐ๋ฅ๋ง ์์ ํ๋ฉด ๋๋ฏ๋ก ์ ์ง๋ณด์๊ฐ ์ฉ์ดํจ.๋ชจ๋ํ: ๊ณตํต ๊ธฐ๋ฅ์ ๋ณ๋์ ๋ชจ๋๋ก ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ๋ชจ๋ํ๋ฅผ ํฅ์์ํด. ์คํ๋ง AOP์ ๊ตฌ์ฑ ์์AspectAspect๋ ํก๋จ ๊ด์ฌ์ฌ๋ฅผ ๋ชจ๋ํํ ๊ฒ์. @Aspect ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ์ฌ ์ ์ํ ์ ์์.@..
๐์คํฐ๋
1. ์คํ๋ง MVC๋?์คํ๋ง mvc๋ ์คํ๋ง ํ๋ ์์ํฌ์ ์ผ๋ถ๋ก, ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ์น ํ๋ ์์ํฌ์ด๋ค.MVC ์ํคํ
์ณ๋ฅผ ๋ฐ๋ฅด๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์
์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ํ๋ ์ ํ
์ด์
๊ณ์ธต์ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ฐ์ ์ ์ฐ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ธ๋ค. MVC ์ํคํ
์ฒ๋?๋๋ณด๊ธฐMVC ์ํคํ
์ฒ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ธ ๊ฐ์ง ์ฃผ์ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ๋ ๋์์ธ ํจํด์ด๋ค.- Model : ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋น- View : ์ฌ์ฉ์์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์์ ์ผ๋ก ํ์ํ๋ ๋ถ๋ถ- Controller : ์ฌ์ฉ์ ์
๋ ฅ์ ์ฒ๋ฆฌํ๊ณ , ๋ชจ๋ธ๊ณผ ๋ทฐ ์ฌ์ด์ ์ธํฐ๋์
์ ๊ด๋ฆฌ 2. ์คํ๋ง MVC์ ์ฃผ์ ๊ตฌ์ฑ ์์DispatcherServletDispatcherServlet์ ์คํ๋ง MVC์ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ์ญํ ์ ํ๋ฉฐ, ๋ชจ๋ ..
๐ค์คํ๋ง ์ปดํฌ๋ํธ ์ค์บ์ด๋? ์ค์ ์ ๋ณด ํด๋์ค์ @ComponentScan ์ด๋
ธํ
์ด์
์ ๋ถ์ด๋ฉด @Bean ์ด๋
ธํ
์ด์
์ด ๋ถ์ ๋ฉ์๋๋ฅผ ์ ์ํด์ฃผ์ง ์์๋ ์๋์ผ๋ก ์คํ๋ง์ด @Component ์ด๋
ธํ
์ด์
์ด ๋ถ์ ํด๋์ค์ ๊ฐ์ฒด๋ค์ ๋น์ผ๋ก ๋ฑ๋กํด์ค ์๋ ๋ฑ๋ก์์ ๋ฉ์๋๋ช
์ ๋น์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํจ ์ปดํฌ๋ํธ ์ค์บ ๋ฐฉ์์ ํด๋์ค ์ด๋ฆ์ ์๊ธ์๋ฅผ ์๋ฌธ์๋ก ๋ฐ๊ฟ์ ์ฌ์ฉํจ ๋น ์ด๋ฆ ๋น ๊ฐ์ฒด createOrderServiceImpl CreateOrderServiceImpl@x01 memberRepositoryImpl MemberRepositoryImpl@x02 @Bean("customName") ์ฒ๋ผ ๊ธฐ๋ณธ๊ฐ ๋์ ์ฌ์ฉํ ๋น์ ์ด๋ฆ์ ์ง์ ํ ์ ์๋ ๊ฒ์ฒ๋ผ @Component("customName") ์ผ๋ก ๋น์ ์ด๋ฆ์ ์ง์ ์ง์ ํด..
๐ค์คํ๋ง ์ปจํ
์ด๋์ด๋? ์ปจํ
์ด๋๋ ๋ณดํต ๊ฐ์ฒด(Bean)๋ค์ ์๋ช
์ฃผ๊ธฐ(Life Cycle)๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ์์๋ ์ธ์คํด์ค๋ค์๊ฒ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋๋ก ํ๋ ๊ฒ์
๋๋ค. ApplicationContext๋ฅผ ์คํ๋ง ์ปจํ
์ด๋๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํฉ๋๋ค. IoC์์น์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํฉ๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ด ํ๋ฆ์ด ๊ฐ๋ฐ์๊ฐ ์๋ ์ปจํ
์ด๋์ ์ํด ๊ฒฐ์ ๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋๋ณด๊ธฐ ๐คIoC ( Inversion Of Control)๋? ์ ์ด์ ์ญ์ ์ด๋ผ๊ณ ํ๋ฉฐ ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ๊ฐ๋ฐ์๊ฐ ์๋ ํ๋ ์์ํฌ๊ฐ ๊ด๋ฆฌํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๋ฐ์์๋ ๊ฐ๋ฐ์๊ฐ ๊ฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ ์ดํด์ผ ํ์ง๋ง ์คํ๋ง์์๋ ์ปจํ
์ด๋์ Bean์ ๋ฑ๋กํ๊ธฐ๋ง ํ๋ฉด, ์คํ๋ง ์ปจํ
์ด๋์์ ๊ฐ์ฒด์ ์๋ช
์ฃผ๊ธฐ๋ฅผ ์ปจํธ๋กคํฉ๋๋ค. ์ฆ, ๊ฐ์ฒด์ ๋ํ ์ ..
๐คDB Connection Pool์ด๋? ๋ฏธ๋ฆฌ ์ผ์ ๊ฐฏ์์ Connection์ ๋ง๋ค์ด Pool์ ์ ์ฅ ์ฌ์ฉ์ ์์ฒญ์ด ๋ฐ์ํ๋ฉด Connection์ ์ ๊ณต, ์ฐ๊ฒฐ์ด ์ข
๋ฃ๋๋ฉด Pool์ ๋ฐํํ์ฌ ์ ์ฅ ์์ฑ๋ Connection์ด ๋ชจ๋ ์ฌ์ฉ์ค์ผ๋๋ ํด๋ผ์ด์ธํธ๋ ๋๊ธฐ ์ํ๋ก ์ ํ โป๏ธConnection ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ํ๋ฆฌ์ผ์ด์
์์ DB ๋๋ผ์ด๋ฒ๋ฅผ ํตํด ์ปค๋ฅ์
์ ์กฐํํ๋ค. DB ๋๋ผ์ด๋ฒ๋ DB์ TCP/IP ์ปค๋ฅ์
์ ์ฐ๊ฒฐํ๋ค. (3 way handshake์ ๊ฐ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ ๋์ ๋ฐ์ ) DB ๋๋ผ์ด๋ฒ๋ TCP/IP ์ปค๋ฅ์
์ด ์ฐ๊ฒฐ๋๋ฉด ์์ด๋์ ํจ์ค์๋, ๊ธฐํ ๋ถ๊ฐ ์ ๋ณด๋ฅผ DB์ ์ ๋ฌํ๋ค. DB๋ ์์ด๋, ํจ์ค์๋๋ฅผ ํตํด ๋ด๋ถ ์ธ์ฆ์ ๊ฑฐ์น ํ ๋ด๋ถ์ DB๋ฅผ ์์ฑํ๋ค. DB๋ ์ปค๋ฅ์
์์ฑ์ด ์๋ฃ๋์๋ค๋ ..
๐คJOIN์ด๋? ์ฌ๋ฌ ํ
์ด๋ธ ๊ฐ์ ์ฐ๊ฒฐ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ณ ๊ฒฐํฉํ๋ ๊ฒ์ ์๋ฏธ ๋ค๋ฅธ ํ
์ด๋ธ์ ์๋ ์ ๋ณด๋ฅผ ํจ๊ป ๊ฐ์ ธ์์ ํ์ํ ์ ๋ณด๋ฅผ ํ๋์ ๊ฒฐ๊ณผ ์งํฉ์ผ๋ก ํฉ์น๋ ๊ฒ์ ๋ชฉ์ ๐คJOIN์ ์ฌ์ฉํ๋ ์ด์ ? ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ์ ํน์ง์ผ๋ก ์ ๊ทํ๋ฅผ ์ํํ๋ฉด ์๋ฏธ ์๋ ๋ฐ์ดํฐ์ ์งํฉ์ผ๋ก ํ
์ด๋ธ์ด ๊ตฌ์ฑ๋๊ณ , ๊ฐ ํ
์ด๋ธ๋ผ๋ฆฌ ๊ด๊ณ(Relationship)๋ฅผ ๊ฐ๊ฒ ๋๋ค. ์์ ํน์ง์ผ๋ก ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ์ฅ ๊ณต๊ฐ์ ํจ์จ์ฑ๊ณผ ํ์ฅ์ฑ์ด ํฅ์๋๋ค. ์๋ก ๊ด๊ณ ์๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ํ
์ด๋ธ๋ก ๋๋์ด ์ ์ฅ๋๋ฏ๋ก, ๊ฐ ํ
์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ฒ์ํ๊ธฐ ์ํด์ ์กฐ์ธ์ด ํ์ํ๋ค. ๐ฉJOIN ์ข
๋ฅ โป๏ธ๋ด๋ถ ์กฐ์ธ(Inner Join) ๋ ํ
์ด๋ธ์์ ๊ณตํต๋ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ ํ๋ค๋ง์ ๋ฐํ ๊ทธ๋ฅ ์กฐ์ธ์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉด ๋ด๋ถ..
B-Tree๋? ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋ ์ํ๋ก ์ ์ง๋์ด ์๋ ํธ๋ฆฌ๋ก ์ผ๋ฐ์ ์ธ ์ด์ง ํธ๋ฆฌ์ ๋น์ทํ์ง๋ง ํ ๋
ธ๋ ๋น ์์ ๋
ธ๋๊ฐ 2๊ฐ ์ด์ ๊ฐ๋ฅํ ํธ๋ฆฌ. ์ด๋ค ๊ฐ์ ๋ํด์๋ ๊ฐ์ ์๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ ๊ฒ์ด ์ฅ์ . ํธ๋ฆฌ๋? ๊ทธ๋ํ์ ์ผ์ข
์ผ๋ก, ํ ๋
ธ๋์์ ์์ํด์ ๋ค๋ฅธ ์ ์ ๋ค์ ์ํํ์ฌ ์๊ธฐ ์์ ์๊ฒ ๋์์ค๋ ์ํ์ด ์๋ ์ฐ๊ฒฐ ๊ทธ๋ํ B tree ์ฌ๊ฐํ์ผ๋ก ํ์๋ ํ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋
ธ๋(node) ๊ฐ์ฅ ์๋จ์ ๋
ธ๋๋ฅผ ๋ฃจํธ ๋
ธ๋(root node) ์ค๊ฐ ๋
ธ๋๋ค์ ๋ธ๋์น ๋
ธ๋ (branch node) ๊ฐ์ฅ ์๋ ๋
ธ๋ ๋ฆฌํ ๋
ธ๋(leaf node) ํน์ง ๊ท ์ผ์ฑ : ์ด๋ค ๊ฐ์ ๋ํด์๋ ๊ฐ์ ์๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค. (ํธ๋ฆฌ ๋์ด๊ฐ ๋ค๋ฅผ ๊ฒฝ์ฐ, ์ฝ๊ฐ์ ์ฐจ์ด๋ ์์ง๋ง O(logN)) ๊ท ํํธ๋ฆฌ : ๋ฃจํธ๋ก ๋ถํฐ ๋ฆฌํ๊น์ง..
์ธ๋ฑ์ค๋? ์ถ๊ฐ์ ์ธ ์ฐ๊ธฐ ์์
๊ณผ ์ ์ฅ๊ณต๊ฐ์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ์ ๊ฒ์ ์๋๋ฅผ ํฅ์ํ๊ธฐ ์ํ ์๋ฃ ๊ตฌ์กฐ ์ฆ, index๋ ๋ฐ์ดํฐ์ ์ฃผ์๊ฐ์ ์ ์ฅํ๋ ๋ณ๋์ ํน๋ณํ ์๋ฃ ๊ตฌ์กฐ์ด๋ค. index๋ฅผ ํ์ฉํด์ ๋น ๋ฅด๊ฒ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋ค. - DBํ
์ด๋ธ์ ์ธ๋ฑ์ค๊ฐ ํ์ํ ์ด์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ ์ถ์ ๋ ํ
์ด๋ธ ์ ์ฒด๋ฅผ ํ์ค์บ(full scan) ํด์ผ ํ๋ค. Full Scan ์๊ฐ ๋ณต์ก๋ : O(N) Index๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๊ฐ ๋ณต์ก๋(B tree) : O(logN) - ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํํ(๋ค)์ ๋น ๋ฅด๊ฒ ์กฐํํ๊ธฐ ์ํด์ ๋น ๋ฅด๊ฒ ์ ๋ ฌ(order by)ํ๊ฑฐ๋ ๊ทธ๋ฃนํ(group by) ํ๊ธฐ ์ํด - ์ธ๋ฑ์ค ์ค์ ํ๋ ๋ฐฉ๋ฒ - ์ด๋ฏธ ํ
์ด๋ธ๊ณผ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ CREATE TA..