Room, DataClass, DAO

woniwon·2024년 3월 18일
0

Android

목록 보기
9/19

Room

  • 데이터 클래스를 사용하면, 메모리 내 데이터로 쉽게 작업이 가능하지만 데이터 유지와 관련해서는 이 데이터를 데이터 베이스저장소와 호환되는 형식으로 변환해야 한다. → 데이터 엑세스 및 저장을 위한 쿼리 필요
  • Room은 앱 데이터 베이스의 테이블로, 이를 사용해 테이블의 행에 저장된 데이터를 업데이트하고 삽입할 새 행을 만든다
  • Room DAO : 앱이 데이터베이스에서 데이터를 검색, 업데이트, 삽입, 삭제하는 데 사용할 메서드 제공
  • Room Database 클래스 : 앱에 해당 데이터베이스와 연결된 DAO 인스턴스를 제공하는 데이터베이스 클래스

Data class

  • 코틀린에서 데이터를 보유하는데 사용
  • 키워드는 data로 정의
  • 컴파일러는 toString(), copy(), equals()와 같은 비교, 출력, 복사를 위한 유틸리티를 자동 생성한다
  • 요구사항
    • 기본 생성자에는 매개변수가 하나 이상 있어야 한다.
    • 모든 기본 생성자 매개변수는 val 또는 var이어야 한다
    • 데이터 클래스는 abstract나 opensealed일 수 없다.
@Entity(tableName = "diarys") // DB 이름 설정
data class Diary(
    @PrimaryKey (autoGenerate = true) //PK 설정 및 자동 Index 생성
    val id: Int=0, //이때, 반드시 초기화 필요
    val title: String,
    val content: String,
    val createdDate: LocalDateTime = LocalDateTime.now(), // 기본값 설정
    val modifiedDate: LocalDateTime? = null
)

DAO

  • 데이터 액세스 객체로, 추상 인터페이스를 제공해 지속성 레이어를 애플리케이션의 나머지 부분과 분리하는 데 사용할 수 있다 (단일 책임 원칙)
  • 애플리케이션의 나머지 부분과 별도로, 기본 지속성 레이어에서 DB 작업 실행과 관련된 모든 복잡성을 숨김 → 데이터 사용 코드와 관계없이 데이터 레이어 변경 가능
  • DAO는 데이터 베이스 쿼리/검색 삽입 삭제 업데이트를 위한 편의 메서드 제공
  • Room 라이브러리는 SQL 문을 작성하지 않고도 간단한 삽입, 삭제, 업데이트를 실행하는 메서드를 정의할 수 있도록 @Insert@Delete@Update와 같은 편의성 주석을 제공
  • Android 스튜디오에서 쿼리를 작성할 때 컴파일러가 SQL 쿼리에 문법 오류가 있는지 확인
profile
단순 기록용 Velog 입니다.

0개의 댓글