안드로이드

[Android] DTO? DAO? Entity?

빡수수 2023. 12. 11. 21:38

서론

프로그래밍에서 한 번쯤은 접해봤을 DTO, DAO, Entity에 대한 개념을 정리해보려 한다.
클린 아키텍처 적용 시 헷갈리면 안 되는 개념이기 때문에 중요하다고 생각하는 개념이다.

 

DTO(Data Transfer Object)

DTO는 단어 그대로 데이터 전송 객체를 의미한다. API 호출 시 response 받는 데이터이다.

  • 계층 간의 데이터 교환을 하기 위해 사용하는 객체
  • API 호출 시 서버로부터 받은 JSON 형태의 데이터를 매핑할 수 있는 data class
  • 클린 아키텍처의 data 모듈에 model 클래스에 해당
  • 화면에 노출시키지 않는 data가 포함된다면 domain 모듈의 model에 필요한 data만 mapping 하는 작업이 필요함

smaple api : https://jsonplaceholder.typicode.com/posts

data class PostModel(
	val userId: Int,
	val id: Int,
	val title: String,
	val body: String
)

 

DAO(Data Acess Object)

DAO는 데이터 베이스에 접근하는 객체를 의미한다. 즉, Database에 CRUD 작업을 수행하는 인터페이스 역할을 한다.

  • 데이터베이스에 접근하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용
  • SQLite(Room)을 사용할 때 DAO를 사용
@Dao
interface PostDao {
	@Insert
	fun insertPost(post: Post)
	
	@Query("SELECT * FROM posts")
	fun getAll(): List<Post>
}

 

Entity(tableName = "posts")

실제 Database에 테이블과 매칭되는 클래스를 의미한다.

  • DTO와 유사함(API response data는 DTO, Database data는 Entity)
  • DTO와 마찬가지로, 화면에 노출시키지 않는 data가 포함된다면 domain 모듈의 model에 필요한 data만 mapping 하는 작업이 필요함
@Entity
data class Post(
	@PrimaryKey
	val id: Int,
	
	val userId: Int,	
	val title: String,
	val body: String
)