ํ์๊ฐ ๋ฐฐ์ด ๋ด์ฉ์ ์ ๋ฆฌํ๊ณ ์ ํจ์ ์์๋ฅผ ๋์ผ๋ ๋น์ ์ ์ธ ํํ์ด ๋ง๊ณ ๊ฐ๋
์ ์ ์ํจ์ ์์ด์ ์ ์์ ์ธ ์ ์๊ฐ ์๋์ ์ธ์ํด์ฃผ์์ผ๋ฉดํ๋ค.
ํผ๋๋ฐฑ ์ ๋ํ์!!!
Persistence๋ ์์์ฑ์ ์๋ฏธํ๋ค. ๊ทธ๋ผ ์์์ฑ์ด๋ ๋ฌด์์ธ๊ฐ?
์์์ฑ์ ๋ํด ์๊ธฐํ๊ธฐ์ ์, ์ปดํจํฐ์ ์ฃผ๊ธฐ์ต์ฅ์น์ธ RAM์ ํ๋ฐ์ฑ๋ฉ๋ชจ๋ฆฌ์ด๋ค.
ํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ๋ ์ปดํจํฐ์ ์ ์์ด ๊บผ์ง๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ค๋ ๊ฒ์ด๋ค.
์ฐ๋ฆฌ๊ฐ ์คํ๋ง์ ์ด์ฉํด ์น ํ์ด์ง๋ฅผ ๋ง๋ค๋, ๋์ ์ธ ์นํ์ด์ง๋ฅผ ๋ง๋๋ ค๋ฉด DB๊ฐ ํ์ํ ๊ฒ์ด๋ค.
๋ง์ฝ, DB์ ์๋ ๋ฐ์ดํฐ๋ค์ด ํ๋ฐ์ฑ์ด์ด์ ์น ์๋ฒ๋ฅผ ์ข
๋ฃํ๋ฉด ๋ ์๊ฐ๋ค๊ณ ์๊ฐํด๋ณด์.
์ค๋ฌด์์๋ ์์ฃผ ๋ํ์ฌ๊ณ ์ผ ๊ฒ์ด๋ค..
DB์ ๋ฐ์ดํฐ๋ค์ ์น ์๋ฒ๊ฐ ์ข
๋ฃ๋ผ๋ DB์ ๊ทธ๋๋ก ์กด์ฌํด์ผํ๋ค.
์ด์ ๊ฐ์ด "๋ฐ์ดํฐ๊ฐ ํ๋ฐ์ฑ์ด ์๋, ์๊ตฌ์ ์ผ๋ก ์กด์ฌํ๋ค"๋ผ๋ ์์ฑ์ด ์์์ฑ์ด๋ค.
API, ํ๋ก๊ทธ๋๋ฐ์ ํ์ง ์๋ ์ฌ๋๋ค๋ ํ๋ฒ์ฏค์ ๋ค์ด๋ดค์ ์๋ ์๋ ๋จ์ด์ด๋ค.
API๋
- ์ ํ๋ฆฌ์ผ์ด์ (Application) -> ํ๋ก๊ทธ๋จ
- ํ๋ก๊ทธ๋๋ฐ(Programming) -> ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๋ฐฉ๋ฒ
- ์ธํฐํ์ด์ค(Interface) -> ๊ท์ฝ(์ฝ์)
Application๊ณผ Programming์ด๋ผ๋ ๋ง์ ๋จ์ด๋ง ๋ค์ด๋ ๋ญ๊ฐ ๊ฐ์ด ์ฌ ๊ฒ์ด๋ค.
๊ทผ๋ฐ ์ธํฐํ์ด์ค๋ ์ ํํ ๋ฌด์์ผ๊น? ์๋ฐ์ interface๋ฅผ ๋งํ๋๊ฒ ์๋๋ค.
์ธํฐํ์ด์ค๋ฅผ ๊ท์ฝ์ด๋ผ๊ณ ํ๋๋ฐ, ๋ฌด์จ ๊ท์ฝ์ผ๊น?
์๋ฅผ ๋ค์ด, ๋ด๊ฐ ๊ธฐ๊ฐ ๋งํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด์ ๋จ๋ค๊ณผ ๊ณต์ ํ๊ณ ์ถ๋ค๊ณ ํ์.
์ด ํ๋ก๊ทธ๋จ์ ๋ด๊ฐ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์ ๋์ ๊ถ์์์ด๊ณ ๋จ๋ค์ด ๋ด ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ ค๋ฉด ํ๋ฝ์ ๋ฐ๊ณ ์ฌ์ฉํด์ผํ ๊ฒ์ด๋ค. ( ex) ๋ด ํ๋ก๊ทธ๋จ์ a ๋ฐ์ดํฐ ์ฌ์ฉ์ ์ํ๋ฉด ๋ฐค 12์ ~ ์๋ฒฝ 6์๊น์ง์๋ง ์ฌ์ฉํด!)
์ด์ฒ๋ผ ์ํ๊ด๊ณ๊ฐ ์กด์ฌํ๋ ๊ท์ฝ(์ฝ์)์ด ์ธํฐํ์ด์ค์ด๋ค.
์ธํฐํ์ด์ค์๋ ๋ค๋ฅธ ๊ฐ๋
์ ๊ฐ๊ณ ์๋ ๊ท์ฝ๋ ์๋ค.
๋ฐ๋ก ์ธํฐ๋ท์ ๊ตฌ์ฑ์์์ธ ํ๋กํ ์ฝ์ด๋ค.
ํ๋กํ ์ฝ์ ์๋ก ๋๋ฑํ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ค.(๋๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ๋ฝ์์ด ์ฌ์ฉํด๋ ๋ญ๋ผ ํ ์ ์๋ค.)
ํ๋ง๋๋ก API๋ ํ๋ก๊ทธ๋จ ์ฌ์ฉ ๊ท์ฝ(ํ๋ก๊ทธ๋จ ์ฌ์ฉ ์ค๋ช ์)์ด๋ค.
์์์ฑ์ ๊ฐ๋ ๊ณผ API์ ๊ฐ๋ ์ ์ข ํฉํด๋ณด๋ฉด, JPA๋ ์๋ฐ ํ๋ก๊ทธ๋จ์ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ ์ ์๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ API์ด๋ค.