DAO(๋ฐ์ดํฐ ์ก์ธ์ค ๊ฐ์ฒด)๋ ํนํ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ฐ ์กฐ์ ํ๋ก์ธ์ค์ ์ถ์ํ ๋ฐ ์บก์ํ๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด ์ํํธ์จ์ด ์ํคํ ์ฒ ๋ฐ ํจํด ์์ญ์์ ๋๋ฆฌ ์ฑํ๋๋ ๋์์ธ ํจํด์ ๋๋ค. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋งฅ๋ฝ์์ ์ฌ์ฉ๋๋ DAO ํจํด์ ์ฃผ์ ๋ชฉํ๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ ์ฅ ๋ฉ์ปค๋์ฆ์ ๋ถ๋ฆฌํ๊ณ ์ด๋ฅผ ๋ ๋์ ์์ค์ ๊ฐ์ฒด ์งํฅ ํํ์ ๋งคํํจ์ผ๋ก์จ ๋น์ฆ๋์ค ๋ก์ง์์ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ก์ง์ ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก DAO๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์์ค(์: ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค, XML ํ์ผ ๋๋ ๊ธฐํ ์ ์ฅ ์์คํ )์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋๋ฉ์ธ ํด๋์ค(๋น์ฆ๋์ค ๊ฐ์ฒด ๋๋ ์ํฐํฐ๋ผ๊ณ ๋ ํจ) ์ฌ์ด์ ์ค๊ฐ ๊ณ์ธต ์ญํ ์ ํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ . ์ด๋ฌํ ๋ถ๋ฆฌ๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ๋ ผ๋ฆฌ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ฐ์ดํฐ ์ ์ฅ ๋ฉ์ปค๋์ฆ์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅ์ฑ, ํ ์คํธ ๊ฐ๋ฅ์ฑ ๋ฐ ํ์ฅ์ฑ์ด ํฅ์๋ฉ๋๋ค.
DAO ๋์์ธ ํจํด์ ๋ช ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํฉ๋๋ค.
- ์ธํฐํ์ด์ค: ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ๋ค์ํ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ฐ ์กฐ์ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ์ธํฐํ์ด์ค์ ๋๋ค. ์ด๋ ๋ฐ์ดํฐ ์ก์ธ์ค ๊ตฌํ๊ณผ ๋๋จธ์ง ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ ๊ณ์ฝ์ ํ์ฑํฉ๋๋ค.
- ๊ตฌํ: ํน์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฉ์ปค๋์ฆ๊ณผ ์ธํฐํ์ด์คํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋๋ฉ์ธ ํด๋์ค๊ฐ ์ดํดํ ์ ์๋ ํ์์ผ๋ก ๋ณํํ๋ ์ฝ๋๋ฅผ ํฌํจํ๋ DAO ์ธํฐํ์ด์ค์ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ์ ๋๋ค. ๋ค์ํ ๋ฐ์ดํฐ ์ ์ฅ ๊ธฐ์ ์ ์ง์ํ๊ธฐ ์ํด ๋ค์ํ ๊ตฌํ์ ๋ง๋ค ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ์์ค: ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ NoSQL ์์คํ ๊ณผ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ก์ธ์คํ๊ณ ์กฐ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ค์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
- ๋๋ฉ์ธ(๋น์ฆ๋์ค) ๊ฐ์ฒด: DAO ๊ณ์ธต๊ณผ ์ํธ ์์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์ํ๋ ๋ฐ ํ์ํ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ์กฐ์ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น์ฆ๋์ค ๊ฐ์ฒด์ ๋๋ค. ์ด๋ฌํ ๊ฐ์ฒด๋ ์ผ๋ฐ์ ์ผ๋ก ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์๋ณธ์ ํน์ ํ ์ด๋ธ์ด๋ ์ปฌ๋ ์ ์ ๋งคํ๋ฉ๋๋ค.
AppMasterno-code ํ๋ซํผ์ ๋งฅ๋ฝ์์ DAO๋ ๊ฐ๋ฐ์์ ์ผ๋ฐ ๊ฐ๋ฐ์ ๋ชจ๋๊ฐ ๊ด๋ฒ์ํ ์ฝ๋ฉ ์ง์ ์์ด๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ๋ฉฐ ํ ์คํธ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ฒ ๋ง๋ค ์ ์๋๋ก ํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๊ฐ๋ฐ์๋ ๋น์ฆ๋์ค ํ๋ก์ธ์ค(BP) ๋์์ด๋๋ฅผ ํตํด ๋ฐ์ดํฐ ๋ชจ๋ธ(๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง)๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ์๊ฐ์ ์ผ๋ก ์์ฑํจ์ผ๋ก์จ DAO์ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ฐ ์กฐ์ ํ๋ก์ธ์ค๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฑ์๋ REST API ๋ฐ WSS endpoints ์์ฑํ ์ ์์ต๋๋ค.
์ต์ข ์ฌ์ฉ์๋ ์๊ฐ์ ์ผ๋ก ์ค๊ณ๋ ์น ๋๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ํ๋ฐํธ ์๋๋ฅผ ํตํด ์ด๋ฌํ ์ถ์ํ๋ ๋ฐ์ดํฐ ์ก์ธ์ค ์๋น์ค์ ์ํธ ์์ฉํฉ๋๋ค. ์ด๋ ์์ ํ ๋ํํ์ผ๋ก ๋ง๋ค์ด์ง๊ณ ์๋ ์์ฑ๋ REST API์ ์ง์ ์ธํฐํ์ด์คํ ์ ์์ต๋๋ค. ํ๋ซํผ์์ ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ตฌ ์ฌํญ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ง์์ ์ผ๋ก ์ฌ์์ฑ๋ ์ ์์ผ๋ฏ๋ก ๊ธฐ์ ๋ถ์ฑ๋ฅผ ์ต์ํํ๊ณ ์ผ๊ด๋ ์ฝ๋ ํ์ง์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ๋ํ AppMaster PostgreSQL ํธํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํฌํจํ ๊ด๋ฒ์ํ ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ์ต์ ์ ์ง์ํ๋ฏ๋ก ์ฌ์ฉ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น์ฆ๋์ค ๋ก์ง ๊ณ์ธต์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ค์ํ ์คํ ๋ฆฌ์ง ๋ฉ์ปค๋์ฆ ๊ฐ์ ์ํํ๊ฒ ์ ํํ ์ ์์ต๋๋ค.
AppMaster ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋ ์์ฑ์ ์ํ Go(Golang)์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ฉ JavaScript/TypeScript์ ํจ๊ป Vue3 ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์์ค์ ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๋ฌ์ฑํฉ๋๋ค. ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ AppMaster Android์ฉ Kotlin ๋ฐ Jetpack Compose, iOS์ฉ SwiftUI ์ฌ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ซํผ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ํน์ ๋์ ํ๋ซํผ์ ๋ง๊ฒ ์ฝ๊ฒ ํ์ฅ๋๊ฑฐ๋ ์์ ๋ ์ ์์ต๋๋ค.
์์ฝํ๋ฉด, ๋ฐ์ดํฐ ์ก์ธ์ค ๊ฐ์ฒด(DAO) ๋์์ธ ํจํด์ ํนํ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋งฅ๋ฝ์์ ์ ์ค๊ณ๋๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ์ํํธ์จ์ด ์์คํ ์ ๋ง๋๋ ๋ฐ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์ ์ญํ ์ ํฉ๋๋ค. DAO๋ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ฐ ์กฐ์ ๋ ผ๋ฆฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์บก์ํํ๊ณ ์ถ์ํํจ์ผ๋ก์จ ๋ฏผ์ฒฉํ๊ณ ๋ฏธ๋ ์งํฅ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ๊ธธ์ ์ด์ด์ค๋๋ค. AppMasterno-code ํ๋ซํผ ๋ด์์ DAO๋ ๊ฐ๋ฐ์์ ์ผ๋ฐ ๊ฐ๋ฐ์ ๋ชจ๋๊ฐ ๊ธฐ์กด ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ๋ณต์ก์ฑ์ ์ฝ๋งค์ด์ง ์๊ณ ๊ฐ๋ ฅํ๊ณ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐ์ ์ผ๋ก ๊ตฌ์ถํ ์ ์๋๋ก ์ง์ํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.