[TIL]Android Room DB

mandoofu·2024년 10월 2일

안드로이드

목록 보기
12/20
post-thumbnail

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
}
// ksp 와 코틀린 버전이 맞아야 함
  • 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)

0개의 댓글