728x90
์ต๊ทผ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ API๋ฅผ ์ฐ๊ฒฐํ๋๋ฐ, ๋ฐฑ์๋๋ถ๊ป ์ง๋ฌธํ๊ธฐ ์ ์ ์ฝ๋๋ฅผ ํ ๋ฒ ๊น์ ํ์ธํด๋ณด๊ณ ์ง๋ฌธํ๊ณค ํ์๋ค. ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ๋ ๋ฐ DTO๋ ๋จ์ด๊ฐ ์๊พธ ๋ถ์ด์๊ธธ๋,, ๋ฌด์จ ์ฉ์ด์ธ๊ฐํด์ ๊ฐ๋จํ๊ฒ ์์๋ณด๊ฒ ๋์๋ค...!
1. DTO(Data Transfer Object)
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉ๋๋ ๊ฐ์ฒด์ ๋๋ค.
- ๋ชฉ์ : ๋ฐ์ดํฐ ์ ์ก์ ์ํ ๊ฐ์ฒด. ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๋น์ฆ๋์ค ๋ก์ง ๊ณ์ธต์ผ๋ก ์ ๋ฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ํน์ง:
- ๋ฐ์ดํฐ๋ฅผ ๋ด๊ธฐ ์ํ ๊ตฌ์กฐ์ฒด ๋๋ ํด๋์ค.
- ์ฃผ๋ก ๋ฐ์ดํฐ์ ์ ์ก๊ณผ ์ ์ฅ์ ๊ด๋ จ๋ ํ๋๋ค์ ํฌํจํฉ๋๋ค.
- ๋น์ฆ๋์ค ๋ก์ง์ ๊ฐ์ง์ง ์๊ณ , ์ฃผ๋ก getter์ setter๋ฅผ ํฌํจํฉ๋๋ค. (Swift์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ์ ์ ์ธํ ๋ getter์ setter๋ฅผ ์๋์ผ๋ก ์์ฑํด์ฃผ๋ฏ๋ก, ๋ณ๋์ ์ ์๊ฐ ํ์ํ์ง ์์ง๋ง ํ์์ ๋ฐ๋ผ getter์ setter๋ฅผ ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค.)
- JSON์ด๋ XML ๋ฑ์ ๋ฐ์ดํฐ ํ์์ผ๋ก ๋ณํ๋์ด ์ ์ก๋ฉ๋๋ค.
struct UserDTO {
var userId: Int
var username: String
var email: String
}
2.DAO(Data Access Object)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๊ฐ์ฒด์ ๋๋ค.
- ๋ชฉ์ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ๋ค๋ฅธ ์ ์ฅ์์ ๋ํ ์ ๊ทผ์ ์ ์ดํ๋ ๊ฐ์ฒด. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ ์์ฉ์ ์บก์ํํ์ฌ ๋น์ฆ๋์ค ๋ก์ง์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ ๊ทผํ์ง ์๋๋ก ํจ.
- ํน์ง:
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ ๊ทผ์ ๋ด๋นํ๋ ๋ฉ์๋๋ค์ ํฌํจํฉ๋๋ค.
- ์ฃผ๋ก CRUD(Create, Read, Update, Delete) ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
- DAO๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ connection๊น์ง ์ค์ ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ์ ํ๊ธฐ ์ํ ๋ก์ง๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋น์ฆ๋์ค ๋ก์ง, ํ๋ ์ ํ ์ด์ ๋ก์ง์ ๊ฐ์ง์ง ์์ต๋๋ค.
- ์ฌ์ฉ์๋ ์์ ์ด ํ์ํ ์ธํฐํ์ด์ค๋ฅผ DAO์๊ฒ ๋์ง๊ณ ,
DAO๋ ์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉ์์๊ฒ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ฐํํฉ๋๋ค.
struct UserDao {
func getUserById(_ userId: Int) -> UserDTO? {
// ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ UserDTO๋ก ๋งคํ ํ ๋ฐํ
return UserDTO(userId: userId, username: "John", email: "john@example.com")
}
func saveUser(_ userDTO: UserDTO) {
// UserDTO๋ฅผ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ๋ก์ง
print("User saved: \(userDTO)")
}
func updateUser(_ userDTO: UserDTO) {
// UserDTO๋ฅผ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐพ์ ์
๋ฐ์ดํธํ๋ ๋ก์ง
print("User updated: \(userDTO)")
}
func deleteUser(_ userId: Int) {
// ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํด๋น ์ฌ์ฉ์๋ฅผ ์ญ์ ํ๋ ๋ก์ง
print("User deleted with ID: \(userId)")
}
}
3.VO(Value Object)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด์ ๋๋ค.
- ๋ฐ์ดํฐ์ ๊ฐ๋ง ์ ์ฅํ๋ฉฐ, ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ ํ์์ ์ ์ฅํ์ง ์์ต๋๋ค.
- ๊ฐ ์์ฒด๋ฅผ ํํํ๋ ๊ฐ์ฒด์ด๋ฉฐ ์์ฑ์๋ฅผ ํตํด ํ๋ฒ ์์ฑ๋๋ฉด ๋ด๋ถ ๊ฐ ๋ณ๊ฒฝ์ด ์๋๋ ๊ณ ์ ๊ฐ, ๋ถ๋ณ์ ์ธ ๊ฐ๋ค์ ๋๋ค.
- ๋ฐ์ดํฐ์ ์ค๋ณต์ ๋ฐฉ์งํ๊ณ , ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
๋ค์ ๋ณด๋ ํ์ด์ด๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ iOS ํ๋ก์ ํธ์ ์ ์ฉํ ์ ์์ ๋ถ๋ถ์ธ ๊ฒ ๊ฐ๋ค..!
์ถํ์ ๋น์ฆ๋์ค ๋ก์ง, ๋๋ฉ์ธ ๋ก์ง ๋ฑ.. ๋ถ๋ฆฌ๋ฅผ ์ ํ ์ ์๊ฒ ๋ ๋ ๋ค์ ๋์์ค๊ฒ ๋ค โ๏ธ
์ฌ์ค๊ณผ ๋ค๋ฅด๋ค๋ฉด ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์ ๐๐ปโ๏ธ
728x90
'๐ป Develop' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Develop] iOS ๊ฐ๋ฐํ๋ฉฐ status code์ ๋ฐ๋ผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ๋ค (+status code ์ ๋ฆฌ) (1) | 2024.07.04 |
---|---|
[Develop] Controller/Manager/Service ์ฐจ์ด (0) | 2023.12.18 |
[Develop] CI/CD์ ๋ํ์ฌ (0) | 2023.11.05 |