본문 바로가기
Kotlin 공부 노트

DTO, DAO, VO에 알아보자!

by 지게요 2023. 3. 30.
728x90
반응형

이번 포스팅은 개발하면서 한 번쯤은 들어봤고 모르면 안 되는 용어(DTO, DAO, VO)를 간단하게 알아보자!

# DTO

- Data Transfer Object의 약자로 계층 간 데이터 교환을 하기 위해 사용하는 객체이다.

- getter & setter 만 가진 클래스이다 (코틀린은 Data Class).

- 쉽게 말해서  HTTP 통신시 JSON 타입의 Request Body와 Response Body를 생각하면 된다.

data class ServerResponse(
  val name: String = "",
  val age: Int = 0,
  val phoneNumber: String = "",
)

# DAO

- Data Access Object의 약자로 데이터베이스의 data에 접근하기 위한 객체이다.

- 간단하게 DB에 접속하여 데이터의 CRUD 작업을 실행하는 객체라고 보면 된다.

- 안드로이드에서 DAO는 보통 Room Database를 적용할 때 사용한다.

아래는 Room Database DAO의 예제이다

@Dao
interface LocalDatabaseDao {
    @Insert
    fun insertAll(vararg users: User)

    @Delete
    fun delete(user: User)

    @Query("SELECT * FROM user")
    fun getAll(): List<User>
}

# VO

- Value Object의 약자로 값을 위해 사용한다.

- 값을 변경할 수 없다(read-Only)

- DTO와 차이점은 DTO는 값이 변할 수 있다는 차이가 있다.

data class ServerResponse(
  val name: String = "",
  val age: Int = 0,
  val phoneNumber: String = "",
)

아까 DTO와 똑같지만 무조건 변하면 안 되기 때문에 val로 고정시켜준다.

참고 자료
https://developer.android.com/training/data-storage/room/accessing-data?hl=ko
https://melonicedlatte.com/2021/07/24/231500.html
반응형