본문 바로가기
Android Studio

[Android 앱개발 심화] 데이터 저장(2) - Room (개요, 3요소, gradle) (# )

by 젼젼39 2024. 4. 30.

1. Room 개요

: SQLite를 쉽게 사용할 수 있는 데이터베이스 객체 매핑 라이브러리

- 쉽게 SQLite를 사용할 수 있는 API를 제공

- Query를 컴파일 시간에 검증함

- Query 결과를 LiveData로 하여 데이터베이스가 변경될 때 마다 쉽게 UI를 변경할 수 있음 (자동으로 ui 변경함)

- SQLite보다 Room을 사용할 것을 권장함

 

 

2. Room의 주요 3요소

1) @Database : 클래스를 데이터베이스로 지정하는 annotation, RoomDatabase를 상속받은 클래스여야 함

- Room.databaseBuilder 를 이용해 인스턴스를 생성함

 

2) @Entity : 클래스를 테이블 스키마로 지정하는 annotation

// 데이터베이스 안에 테이블들을 만들어야 함... 그 테이블들을 만드는.. 스키마를 지정하는...? @@@

 

3) @Dao : 클래스를 DAO (Data Access Object)로 지정하는 annotation

- 기본적인 insert, delete, update SQL은 자동으로 만들어주며, 복잡한 SQL은 직접 만들 수 있음

 

 

3. gradle 파일 설정

- Room은 안드로이드 아키텍쳐에 포함되어 있음

- 사용하기 위해 build.gradle 파일의 dependencies에 아래 내용 추가하기

//Androidx 사용하는 경우를 가정함, Android Studio와 SDK는 최신 버전으로 사용
    (def room_version 옆 숫자 부분은 검색 후 최신버전 사용하기 - 지금은 2.5.2인듯)

// 'kotlin-kapt' 플러그인이 추가

// dependencies 추가

plugins {
    //alias(libs.plugins.androidApplication)
    //alias(libs.plugins.jetbrainsKotlinAndroid)
    kotlin("kapt")
}
.....

dependencies {

    ......

	val roomVersion = "2.6.1"
	implementation(libs.androidx.room.runtime)
	annotationProcessor(libs.androidx.room.compiler)
	kapt("androidx.room:room-compiler:$roomVersion")
	// optional - Kotlin Extensions and Coroutines support for Room
	implementation(libs.androidx.room.ktx)
	// optional - Test helpers
	testImplementation(libs.androidx.room.testing)
}