Room
- 데이터 클래스를 사용하면, 메모리 내 데이터로 쉽게 작업이 가능하지만 데이터 유지와 관련해서는 이 데이터를 데이터 베이스저장소와 호환되는 형식으로 변환해야 한다. → 데이터 엑세스 및 저장을 위한 쿼리 필요
- Room은 앱 데이터 베이스의 테이블로, 이를 사용해 테이블의 행에 저장된 데이터를 업데이트하고 삽입할 새 행을 만든다
- Room DAO : 앱이 데이터베이스에서 데이터를 검색, 업데이트, 삽입, 삭제하는 데 사용할 메서드 제공
- Room Database 클래스 : 앱에 해당 데이터베이스와 연결된 DAO 인스턴스를 제공하는 데이터베이스 클래스
Data class
- 코틀린에서 데이터를 보유하는데 사용
- 키워드는 data로 정의
- 컴파일러는 toString(), copy(), equals()와 같은 비교, 출력, 복사를 위한 유틸리티를 자동 생성한다
- 요구사항
- 기본 생성자에는 매개변수가 하나 이상 있어야 한다.
- 모든 기본 생성자 매개변수는
val
또는 var
이어야 한다
- 데이터 클래스는
abstract
나 open
, sealed
일 수 없다.
@Entity(tableName = "diarys")
data class Diary(
@PrimaryKey (autoGenerate = true)
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 쿼리에 문법 오류가 있는지 확인