์ํฐํ๋ผ์ด์ฆ์ฉ Java ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ํธํ๊ฒ ํ ์ ์๊ฒ ํด์ฃผ๋
์คํ์์ค ๊ฒฝ๋๊ธ ์ ํ๋ฆฌ์ผ์ด์
ํ๋ ์์ํฌ
1๏ธโฃ ์ํฐํ๋ผ์ด์ฆ์ฉ Java ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํธํ๊ฒ ํ ์ ์๊ฒ ํด์ฃผ๋ 1๏ธโฃ
๊ธฐ์
์์ ์ด์ํ๋ ์น ์๋น์ค์๋ ๋น์ฆ๋์ค ๋ก์ง์ด๋ผ๋ ๊ฒ์ด ์์ต๋๋ค.
๋น์ฆ๋์ค ๋ก์ง์ด๋, ๊ธฐ์
์ด ์ ๊ณตํ๋ ์๋น์ค๋ฅผ ์ฝ๋๋ก ๊ตฌํํ ๊ฒ์ผ๋ก, ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ํด๊ฒฐํ๊ธฐ ์ํ
์ค์ง์ ์ธ ์ฝ๋๋ค์ ์๋ฏธํฉ๋๋ค.
์คํ๋ง์ ์ด์ ๊ธฐ์ ์ ๋นํด ์ฌ์ฉ ๋ฐฉ๋ฒ์ด ์๋์ ์ผ๋ก ๋ ๋ณต์กํฉ๋๋ค.
๋ฐ๋ผ์, ๊ฐ๋ฐ ์ด๊ธฐ์ ๊ธฐ๋ณธ์ ์ธ ์ค์ ๊ณผ ์ ์ฉ์ํฌ ๊ธฐ์ ๋ค๋ง ์ ์ ํ์ ํด์ค๋ค๋ฉด,
๊ธฐ์ ๋ณด๋ค๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ก์ง ์์ฒด์ ๋ ์ง์คํ์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ ์ ์์ต๋๋ค.
์คํ๋ง์ ์คํ์์ค ํ๋ ์์ํฌ์ด์ง๋ง, ์์ ์ ์ธ ๊ฐ๋ฐ๊ณผ ๊ฐ์ ์ด ๋ณด์ฅ๋ฉ๋๋ค.
ํ์ฌ ์คํ๋ง์ ์คํ์์ค๋ก ๋ฐฐํฌ๋์ด ๋๊ตฌ๋ ์ด์ฉํ ์ ์์ง๋ง, ์คํ๋ง์์ค(SpringSource)๋ผ๋
IT๊ธฐ์
์์ ๊ด๋ฆฌํ๊ณ ์์ผ๋ฉฐ,
์คํ๋ง์ ์์ค ์ฝ๋๋ฅผ ์์ ํ๊ฑฐ๋ ๊ฐ์ ํ๋ ์ผ์๋ ์คํ๋ง์์ค์
ํ์ ์ ์ธ ์ธ์๋ง ์ฐธ์ฌํ ์ ์์ต๋๋ค.
์คํ๋ง์ ์ฌ์ฉํจ์ผ๋ก์จ ๊ธฐ์กด ๊ธฐ์ ์ ์ฌ์ฉํ ๋์ ๋ถ๊ฐํผํ๊ฒ ์์ฑํด์ผ๋ง ํ๋
๋ถํ์ํ๊ฒ ๋ณต์กํ ์ฝ๋๋ฅผ ์ ๊ฑฐํ์ฌ ์ฝ๋์ ๋ณต์ก์ฑ์ ๋ฎ์ถ ์ ์์์ ์๋ฏธํฉ๋๋ค.
ํ๋ ์์ํฌ๋, ์ด๋ ํ ๋ชฉ์ ์ ์ฝ๊ฒ ๋ฌ์ฑํ ์ ์๋๋ก ํด๋น ๋ชฉ์ ๊ณผ ๊ด๋ จ๋ ์ฝ๋์ ๋ผ๋๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
ํ๋ ์์ํฌ๋ ํน์ ์
๋ฌด ๋ถ์ผ ๋ฐ ํน์ ๊ธฐ์ ์ด ์๋๋ผ,
์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ํ์ํ ๋ชจ๋ ๊ณผ์ ์ ์ง์คํฉ๋๋ค.
๋ค์ ๋งํด, ์ ํ๋ฆฌ์ผ์ด์
ํ๋ ์์ํฌ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ๋ฐ์ ์์ด
ํ์ํ ๋ชจ๋ ์
๋ฌด ๋ถ์ผ ๋ฐ ๋ชจ๋ ๊ธฐ์ ๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ค์ ๋ผ๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
POJO -> Plain Old Java Object
์์ Java๋ง์ ํตํด์ ์์ฑํ ๊ฐ์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค.
์์ Java ๋ง์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ Java ๋ฐ Java์ ์คํ์ ์ ์๋ ๊ธฐ์ ๋ง ์ฌ์ฉํ๋ค๋ ์๋ฏธ์
๋๋ค.
์ฆ, ์ด๋ค ๊ฐ์ฒด๊ฐ ์ธ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ธ๋ถ์ ๋ชจ๋์ ๊ฐ์ ธ์์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด,
๊ทธ ๊ฐ์ฒด๋ POJO๋ผ๊ณ ํ ์ ์์ต๋๋ค. POJO๋ ๋ง ๊ทธ๋๋ก, ๋ค๋ฅธ ๊ธฐ์ ์ ์ฌ์ฉํ์ง ์๋ ์์ํ
Java๋ง์ ์ฌ์ฉํ์ฌ ๋ง๋ ๊ฐ์ฒด์ธ ๊ฒ์
๋๋ค.
-> ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ importํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ๊ฐ์ฒด๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ด
์๋ค.
์ด ๊ฐ์ฒด๊ฐ ์ฌ์ฉํ๊ณ ์๋ ๊ธฐ์ ์ด Deprecated๋๊ฑฐ๋, ๊ฐ์ ๋ ์ ๊ธฐ์ ์ด ๋ฑ์ฅํ์ฌ
๊ธฐ์กด ๊ธฐ์ ๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ๋ชจ๋ ๊ณ ์ณ์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ๋ฉด ํด๋น ๊ธฐ์ ์ ์ฌ์ฉํ๊ณ ์๋ ๋ชจ๋ ๊ฐ์ฒด๋ค์
์ฝ๋๋ฅผ ์ ๋ถ ๋ฐ๊ฟ์ฃผ์ด์ผ๋ง ํฉ๋๋ค. ์ด๋ ํด๋น ๊ฐ์ฒด๊ฐ ์ธ๋ถ ๋ชจ๋์ ์ง์ ์ ์ผ๋ก ์์กดํ๊ณ ์๊ธฐ ๋๋ฌธ์
์์ฐ์ค๋ฝ๊ฒ ๋ฐ์ํ๋ ๋ฌธ์ ์
๋๋ค.
๋ฐ๋ฉด, POJO๋ ์์ Java๋ง์ ์ฌ์ฉํ์ฌ ๋ง๋ ๊ฐ์ฒด์ด๋ฏ๋ก ํน์ ๊ธฐ์ ์ด๋ ํ๊ฒฝ์ ์ข
์๋์ง ์์ต๋๋ค.
๋ฐ๋ผ์, ์ธ๋ถ ๊ธฐ์ ์ด๋ ๊ท์ฝ์ ๋ณํ์ ์ฝ๋งค์ด์ง ์์, ๋ณด๋ค ์ ์ฐํ๊ฒ ๋ณํ์ ํ์ฅ์ ๋์ฒํ ์ ์์ต๋๋ค.
์ด๋ฌํ POJO๋ฅผ ์ฌ์ฉํ์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ๋ฉด ๊ฐ์ฒด์งํฅ ์ค๊ณ๋ฅผ ์ ํ์์ด ์ ์ฉํ ์ ์์ผ๋ฉฐ,
์ฝ๋๊ฐ ๋จ์ํด์ ธ ํ
์คํธ์ ๋๋ฒ๊น
๋ํ ์ฌ์์ง๋๋ค. ์ด์ฒ๋ผ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ๋ ๋ฐ์
POJO๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ๋ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ POJO ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๊ณ ํฉ๋๋ค.
Java๋ ๊ฐ์ฒด์งํฅ ์ธ์ด์ด๋ฏ๋ก, ๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ ํ ๋งบ์ด์ฃผ๋ ๊ฒ์ด ์ค์ํ ์์์
๋๋ค.
์๋์ ์ฝ๋์ฒ๋ผ A ์ธ์คํด์ค๊ฐ B ์ธ์คํด์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์๋ค๋ฉด
A๋ B์ ์์กด ๊ด๊ณ๋ฅผ ๋งบ์ ๊ฒ์ด ๋๋ฉฐ, ์ด ๋์ ๊ด๊ณ๋ฅผ โA๊ฐ B์ ์์กดํ๋ ๊ด๊ณโ๋ผ๊ณ ํํํ ์ ์์ต๋๋ค.
class A {
public void methodOfA(){
B b = new B();
b.example();
}
}
class B {
public void example(){
...
}
}
์์ฒ๋ผ ์ฝ๋๋ฅผ ์์ฑํ ๋์ ํ์ฐ์ ์ผ๋ก ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ง์ฝ, A๊ฐ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ B๊ฐ ์๋๋ผ, ์๋กญ๊ฒ C๋ฅผ ์ ์ํด์ ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
๋น์ฐํ๊ฒ๋, A์ ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ๋ณ๊ฒฝํ ์๋ฐ์ ์์ ๊ฒ์
๋๋ค.
class A {
public void methodOfA(){
//B b = new B();
//b.example();
C c = new C();
c.example();
}
}
class B {
public void example(){
...
}
}
// ํด๋์ค C ์ ์
class C {
public void example(){
...
}
}
์ ์์ ์์๋ ๊ธฐ์กด์ B๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฒด๊ฐ A ํ๋๋ฟ์ด๋ฏ๋ก ๊ฐ๋จํ๊ฒ ๋ฐ๊ฟ์ฃผ๋ฉด ๋์ง๋ง,
๋ง์ฝ ๊ธฐ์กด์ B๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฒด๊ฐ A ๋ฟ๋ง ์๋๋ผ, ์์ญ ๋๋ ์๋ฐฑ๊ฐ๊ฐ ์๋ค๋ฉด
๋ชจ๋ ๊ฐ์ฒด์ ์ฝ๋๋ฅผ ์์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
ํ์ง๋ง, ์คํ๋ง์ ์ฌ์ฉํ๋ฉด ์์ฒ๋ผ ๋ณํ๊ฐ ๋ฐ์ํ ์ํฉ์ ์ต์ํ์ ์์ ๋ง์ผ๋ก
๋ณํ๋ฅผ ์ ์ฐํ๊ฒ ์์ฉํ ์ ์์ต๋๋ค. ์คํ๋ง์ ์ฌ์ฉํ์ฌ ์ข ๋ ๋ณํ์ ์ ์ฐํ๊ฒ ๋์ํ ์ ์๋
์ฝ๋๋ฅผ ์์ฑํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
// (1) A๊ฐ ์ฌ์ฉํ๋ ๋ฉ์๋๋ฅผ ์ธํฐํ์ด์ค I์ ์ถ์ ๋ฉ์๋๋ก ์ ์ํ ๋ค์, (์ถ์ํ)
interface I{
void example();
}
class A {
// (3) ๊ทธ ๋ค์, ์ธํฐํ์ด์ค ํ์
์ ํ๋๋ฅผ ์ ์ธํ๊ณ ,
private I i;
// (4) ์์ฑ์๋ฅผ ํตํด ์ธ๋ถ๋ก๋ถํฐ ์ธ์คํด์ค๋ฅผ ๋ฐ์์ i๋ฅผ ์ด๊ธฐํํด์ค๋๋ค. (๋คํ์ฑ)
public A(I i){
this.i = i;
}
public void methodOfA(){
// (5) ์ธ๋ถ๋ก๋ถํฐ ๋ฐ์์จ ์ธ์คํด์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
i.example();
}
}
// (2) A๊ฐ ์ฌ์ฉํ๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง ๊ฐ์ฒด๋ค์ด I๋ฅผ ๊ตฌํํ๋๋ก ํฉ๋๋ค.
class B implements I {
public void example(){
...
}
}
class C implements I{
public void example(){
...
}
}
์์์ A๋ ์์ ์ด ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์ค์ค๋ก ์์ฑํ์ง ์๊ณ , ์์ฑ์๋ฅผ ํตํด ์ธ๋ถ๋ก๋ถํฐ ๋ฐ์์ค๊ณ ์์ต๋๋ค.
์ฆ, A๋ ์์ ์ด ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์์ง ๋ชปํ๋ฉฐ, ๊ทธ์ i์ ํ ๋น๋ ์ธ์คํด์ค์ example()์ด๋ผ๋ ๋ฉ์๋๊ฐ
์กด์ฌํ๋ค๋ ๊ฒ๋ง ์๊ณ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋๊ตฐ๊ฐ A๊ฐ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ๊ฒฐ์ ํ๊ณ ์์ฑํด์ A๊ฐ ์ธ์คํด์คํ๋ ๋ ์ธ์๋ก
์ ๋ฌํด์ฃผ์ด์ผ๋ง ํฉ๋๋ค. ๊ทธ๋์ผ A๋ B์ ๊ฒ์ด๋ , C์ ๊ฒ์ด๋
example() ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
--> ๊ทธ ๋๊ตฐ๊ฐ๊ฐ ๋ฐ๋ก ์คํ๋ง์
๋๋ค.
์คํ๋ง์ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ ๋ก์ง ์ธ๋ถ์์ A๊ฐ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ๋ณ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ์๊ฐ ์ค์ ํด๋์ค ํ์ผ์ A๊ฐ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ C๋ก ์ค์ ํด๋๋ฉด, ์ ํ๋ฆฌ์ผ์ด์
์ด
๋์ํ๋ฉด์ ์คํ๋ง์ด ์ค์ ํด๋์ค ํ์ผ์ ํด์ํ๊ณ , ๊ฐ๋ฐ์๊ฐ ์ค์ ํด๋๋๋ก C ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ
A์ ์์ฑ์์ ์ธ์๋ก C๋ฅผ ์ ๋ฌํด์ค๋๋ค.
--> ์ด์ฒ๋ผ ๊ฐ๋ฐ์๊ฐ ์๋ ์คํ๋ง์ด A๊ฐ ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์์กด ๊ด๊ณ๋ฅผ ๋งบ์ด์ฃผ๋ ๊ฒ์
IoC(Inversion of Control, ์ ์ด์ ์ญ์ )
๋ผ๊ณ ํ๋ฉฐ,
๊ทธ ๊ณผ์ ์์ C๋ฅผ A์ ์์ฑ์๋ฅผ ํตํด ์ฃผ์
ํด์ฃผ๋ ๊ฒ์ DI(Dependency Injection, ์์กด์ฑ ์ฃผ์
)
๋ผ๊ณ ํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ๋์ ๊ตฌํํด์ผ ํ๋ ๊ธฐ๋ฅ๋ค์ ํฌ๊ฒ
๊ณตํต ๊ด์ฌ ์ฌํญ๊ณผ ํต์ฌ ๊ด์ฌ ์ฌํญ์ผ๋ก ๋ถ๋ฅํ ์ ์์ต๋๋ค.
๋จผ์ , ํต์ฌ ๊ด์ฌ ์ฌํญ์ ์ ํ๋ฆฌ์ผ์ด์
์ ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ ๊ด์ฌ ์ฌํญ์ผ๋ก ๊ณตํต ๊ด์ฌ ์ฌํญ์ ๋ชจ๋ ํต์ฌ ๊ด์ฌ ์ฌํญ์ ๊ณตํต์ ์ผ๋ก ์ ์ฉ๋๋ ๊ด์ฌ ์ฌํญ๋ค์ ์๋ฏธํฉ๋๋ค.
ex) ์ปคํผ์ฃผ๋ฌธ
ํต์ฌ ๊ด๋ฆฌ์ฌํญ -> ๋ฉ๋ด ๋ฑ๋กํ๊ธฐ, ์ฃผ๋ฌธํ๊ธฐ, ์ฃผ๋ฌธ ๋ณ๊ฒฝํ๊ธฐ ๋ฑ
๊ณตํต ๊ด์ฌ ์ฌํญ -> ๋ฉ๋ด ๋ฑ๋กํ๊ธฐ, ์ฃผ๋ฌธํ๊ธฐ, ์ฃผ๋ฌธ ๋ณ๊ฒฝํ๊ธฐ ๋ฑ ๋ชจ๋ ํต์ฌ ๊ด์ฌ ์ฌํญ์๋
๋ก๊น
์ด๋ ๋ณด์ ๋ฑ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ
AOP ์ฃผ์ ๊ฐ๋
- Aspect : ์์์ ์ค๋ช ํ ํฉ์ด์ง ๊ด์ฌ์ฌ๋ฅผ ๋ชจ๋ํ ํ ๊ฒ. ์ฃผ๋ก ๋ถ๊ฐ๊ธฐ๋ฅ์ ๋ชจ๋ํํจ.
- Target : Aspect๋ฅผ ์ ์ฉํ๋ ๊ณณ (ํด๋์ค, ๋ฉ์๋ .. )
- Advice : ์ค์ง์ ์ผ๋ก ์ด๋ค ์ผ์ ํด์ผํ ์ง์ ๋ํ ๊ฒ, ์ค์ง์ ์ธ ๋ถ๊ฐ๊ธฐ๋ฅ์ ๋ด์ ๊ตฌํ์ฒด
- JointPoint : Advice๊ฐ ์ ์ฉ๋ ์์น, ๋ผ์ด๋ค ์ ์๋ ์ง์ . ๋ฉ์๋ ์ง์ ์ง์ , ์์ฑ์ ํธ์ถ ์์ , ํ๋์์ ๊ฐ์ ๊บผ๋ด์ฌ ๋ ๋ฑ ๋ค์ํ ์์ ์ ์ ์ฉ๊ฐ๋ฅ
- PointCut : JointPoint์ ์์ธํ ์คํ์ ์ ์ํ ๊ฒ. 'A๋ ๋ฉ์๋์ ์ง์ ์์ ์ ํธ์ถํ ๊ฒ'๊ณผ ๊ฐ์ด ๋์ฑ ๊ตฌ์ฒด์ ์ผ๋ก Advice๊ฐ ์คํ๋ ์ง์ ์ ์ ํ ์ ์์
์ด ๋, ํต์ฌ ๊ด์ฌ ์ฌํญ๊ณผ ๊ณตํต ๊ด์ฌ ์ฌํญ์ด ์ฝ๋์ ์๋์ ๊ฐ์ด ํจ๊ป ๋ชจ์ฌ ์์ผ๋ฉด ํ์ฐ์ ์ผ๋ก ๊ณตํต ๊ด์ฌ ์ฌํญ๊ณผ ๊ด๋ จ๋ ์ฝ๋๊ฐ ์ค๋ณต๋ ์๋ฐ์ ์์ต๋๋ค. ์ด์ฒ๋ผ ์ฝ๋๊ฐ ์ค๋ณต๋์ด์ ธ ์๋ ๊ฒฝ์ฐ, ๊ณตํต ๊ด์ฌ ์ฌํญ์ ์ํํ๋ ๋ก์ง์ด ๋ณ๊ฒฝ๋๋ฉด ๋ชจ๋ ์ค๋ณต ์ฝ๋๋ฅผ ์ฐพ์์ ์ผ์ผ์ด ์์ ํด์ฃผ์ด์ผ๋ง ํฉ๋๋ค.
class Order{
...
public void ์ฃผ๋ฌธํ๊ธฐ() {
// ๊ณตํต ๊ด์ฌ ์ฌํญ
๋ก๊น
๊ด๋ จ ์ฝ๋
๋ณด์ ๊ด๋ จ ์ฝ๋
// ํต์ฌ ๊ด์ฌ ์ฌํญ
์ฃผ๋ฌธ ๊ด๋ จ ๋ก์ง
}
public void ์ฃผ๋ฌธ_๋ณ๊ฒฝํ๊ธฐ() {
// ๊ณตํต ๊ด์ฌ ์ฌํญ
๋ก๊น
๊ด๋ จ ์ฝ๋
๋ณด์ ๊ด๋ จ ์ฝ๋
// ํต์ฌ ๊ด์ฌ ์ฌํญ
์ฃผ๋ฌธ ๋ณ๊ฒฝ ๊ด๋ จ ๋ก์ง
}
public void ๋ฉ๋ด_๋ฑ๋กํ๊ธฐ() {
// ๊ณตํต ๊ด์ฌ ์ฌํญ
๋ก๊น
๊ด๋ จ ์ฝ๋
๋ณด์ ๊ด๋ จ ์ฝ๋
// ํต์ฌ ๊ด์ฌ ์ฌํญ
๋ฉ๋ด ๋ฑ๋ก ๊ด๋ จ ๋ก์ง
}
}
์์ ์์ ์์ ๋ฐ์ํ๋ ์ฝ๋์ ์ค๋ณต์ด๋ผ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋
๊ณตํต ๊ด์ฌ ์ฌํญ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ฅ๋ค์ ๋ณ๋์ ๊ฐ์ฒด๋ก ๋ถ๋ฆฌํด๋ธ ๋ค์,
๋ถ๋ฆฌํด๋ธ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํตํด ๊ณตํต ๊ด์ฌ ์ฌํญ์ ๊ตฌํํ ์ฝ๋๋ฅผ ์คํ์ํฌ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค.
์ด์ฒ๋ผ, ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ ๊ฑธ์ณ ์ ์ฉ๋๋ ๊ณตํต ๊ธฐ๋ฅ์
๋น์ฆ๋์ค ๋ก์ง์ผ๋ก๋ถํฐ ๋ถ๋ฆฌํด๋ด๋ ๊ฒ์ AOP(Aspect Oriented Programming, ๊ด์ฌ ์งํฅ ํ๋ก๊ทธ๋๋ฐ)๋ผ๊ณ ํฉ๋๋ค.
MySQL์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์ ์๋ฃํ๋๋ฐ, Maria DB๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐ๊ฟ์ผ ํ๋ ์ํฉ์ ๊ฐ์ ํด๋ด
์๋ค.
์ด ๋, ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง๋ค ์ฌ์ฉ ๋ฐฉ๋ฒ์ด ๋ค๋ฅด๋ค๋ฉด
์๋ง ๊ธฐ์กด์ ์์ฑํ ์ฝ๋๋ฅผ ์ ๋ถ ์ง์ฐ๊ณ ์๋ก ์์ฑํด์ผ ํ๊ฑฐ๋,
๊ธฐ์กด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ด ๋ค๋ฅธ ์ฝ๋๋ฅผ ๋ชจ๋ ์ฐพ์์
์ผ์ผ์ด ์์ ํด์ฃผ์ด์ผ ํ ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋, ์คํ๋ง์ ์ฌ์ฉํ๋ฉด ๋์ผํ ์ฌ์ฉ๋ฐฉ๋ฒ์ ์ ์งํ ์ฑ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
์ด๋ ์คํ๋ง์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค๋ฅผ ์ถ์ํํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํฉ๋๋ค.
์ฆ, ์คํ๋ง์ Java๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๊ท์ ํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๊ณ ์์ผ๋ฉฐ,
์ด๋ฅผ JDBC(Java DataBase Connectivity)๋ผ๊ณ ํฉ๋๋ค.
๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋ ํ์ฌ๋ค์ ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ ๋๋ผ์ด๋ฒ๋ฅผ Java ์ฝ๋์
ํํ๋ก ๋ฐฐํฌํ๋๋ฐ, ์ด ๋๋ผ์ด๋ฒ์ ํด๋นํ๋ Java ์ฝ๋์ ํด๋์ค๊ฐ JDBC๋ฅผ ๊ตฌํํฉ๋๋ค.
๋ฐ๋ผ์, JDBC๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ์ฝ๋๋ฅผ ์์ฑํด๋๋ฉด,
์ดํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐ๊พธ์ด๋ ๊ธฐ์กด์ ์์ฑํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ๋ก์ง์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
--> ์ด๋ฌํ JDBC์ฒ๋ผ ํน์ ๊ธฐ์ ๊ณผ ๊ด๋ จ๋ ์๋น์ค๋ฅผ ์ถ์ํํ์ฌ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋ ์ ์๋๋ก ํ ๊ฒ์ PSA(Portable Service Abstraction, ์ผ๊ด๋ ์๋น์ค ์ถ์ํ)
๋ผ๊ณ ํฉ๋๋ค.