Room DB
-
Room API : SQLite 상위계층에 존재하며 고수준의 인터페이스를 제공해 안드로이드 앱의 생명주기 등과 연동되어 로컬데이터를 저장하기 수월한 Room DB가 등장
-
Room DB 특징 : ORM(Object Relational mapping)
- Table 과 Class 간의 매핑 을 통해 RDB를 CRUD를 다룰 수 있도록 할 수 있다.
- 앱 내부에서 가상 DB를 구축하는 기법
-
Annotation 사용하여 객체 관계를 매핑
- ksp(Kotlin Symbol Processing)변환 Plugin
plugins {
id("com.google.devtools.ksp") version "1.9.24-1.0.24" apply false
}
-
Room DBMS에선 데이터 작업을 송/수신하기 떄문에 Main Thread에선 처리 할 수 없기에 비동기 기반 처리를 원칙으로 한다.
-
DAO(Data Access Object - CRUD)
- DB Schema 에 접근하기 위한 객체
- DB 에 접근 하기 위한 비지니스 로직을 분리하기 위해 사용
- CRUD를 위해 Repository가 필요로 하는 SQL 문을 포함 하는 객체
-
Entity(Data Transfer Object, Value Object, Data Model)
- DB 테이블의 스키마를 정의하는 클래스(Table : Class Mapping)
- 테이블 이름과 열 이름 및 데이터 타입, 기본 키(Primary Key)를 정의
- 테이블에서 레코드에 해당하는 getter/setter 를 제공
- DAO에서 호출되는 요청/응답으로 DAO에 의해 레포지토리에서 반환되는 데이터는 보통 엔티티 클래스(하나 또는 여러개의 인스턴스) 들이 된다
- MVVM Layer 간 데이터 교환을 위한 용도(DTO)