[android] 안드로이드 Room Database의 사용법

목차


Room Database란?

Room은 안드로이드 앱에서 SQLite 데이터베이스를 쉽게 사용할 수 있도록 제공되는 라이브러리이다. Room은 SQLite의 기능을 추상화하여 더 편리하게 사용할 수 있도록 도와준다.

Room Database 설정

앱 모듈의 build.gradle 파일에 아래의 의존성을 추가한다.

implementation "androidx.room:room-runtime:2.4.0"
annotationProcessor "androidx.room:room-compiler:2.4.0"

Entity 생성

데이터베이스의 테이블을 나타내기 위해 Entity를 만들어야 한다. Entity 클래스는 데이터베이스의 각 열을 필드로 표현하고, 기본 키를 나타내는 어노테이션을 사용하여 식별한다.

예시:

import androidx.room.Entity
import androidx.room.PrimaryKey

@Entity
data class User(
    @PrimaryKey val id: Int,
    val name: String
)

DAO 생성

DAO(Data Access Object)는 데이터베이스에 접근하기 위한 메서드를 제공한다. 즉, DAO는 데이터베이스에 대한 CRUD(Create, Read, Update, Delete) 작업을 정의한다.

예시:

import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query

@Dao
interface UserDao {
    @Query("SELECT * FROM user")
    fun getAll(): List<User>
    
    @Insert
    fun insert(user: User)
}

Database 클래스 생성

RoomDatabase를 상속받는 데이터베이스 클래스를 만든다. 이 클래스에는 데이터베이스와 관련된 설정 및 DAO의 인스턴스를 얻을 수 있는 메서드를 정의해야 한다.

예시:

import androidx.room.Database
import androidx.room.RoomDatabase

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

Room Database 사용

Room 라이브러리를 사용하여 데이터베이스를 초기화하고, DAO를 통해 데이터를 추가하거나 조회할 수 있다.

예시:

val db = Room.databaseBuilder(
    applicationContext,
    AppDatabase::class.java, "database-name"
).build()

val userDao = db.userDao()
val users = userDao.getAll()

이제, 안드로이드 앱에서 Room 데이터베이스를 사용하는 방법을 알게 되었다. Room을 사용하면 SQLite 데이터베이스를 쉽게 다룰 수 있으며, 데이터베이스와 관련된 코드를 간결하게 관리할 수 있다.

참고 자료