[android] 안드로이드 Room Database와 Kotlin의 함께 사용

안드로이드 앱을 개발하다 보면 데이터베이스를 효과적으로 관리해야 하는 경우가 많습니다. 안드로이드 앱에서 SQLite 데이터베이스를 사용하려면 많은 boilerplate 코드를 작성해야 했습니다. 그러나 안드로이드의 Room 라이브러리를 사용하면 SQLite 데이터베이스를 쉽게 다룰 수 있습니다. 이번 블로그에서는 안드로이드 Room 데이터베이스를 Kotlin으로 함께 사용하는 방법에 대해 알아보겠습니다.

내용

  1. Room 라이브러리란?
  2. Kotlin과 Room 데이터베이스 설정
  3. Entity 정의하기
  4. DAO 생성하기
  5. Room 데이터베이스 초기화
  6. 데이터베이스 조작하기
  7. 결론

Room 라이브러리란?

Room은 SQLite 데이터베이스에 접근하는데 도움이 되는 안드로이드 아키텍처 컴포넌트 라이브러리입니다. Room을 사용하면 SQLite 데이터베이스에 대한 추상화를 제공하여 편리하게 데이터를 저장하고 조회할 수 있습니다.

Kotlin과 Room 데이터베이스 설정

Room을 사용하려면 먼저 앱 모듈의 build.gradle 파일에 Room 라이브러리 의존성을 추가해야 합니다.

implementation "androidx.room:room-runtime:2.3.0"
kapt "androidx.room:room-compiler:2.3.0"

그런 다음, build.gradle 파일에 Kotlin에서 Room을 사용할 수 있도록 아래와 같이 추가합니다.

apply plugin: 'kotlin-kapt'

Entity 정의하기

Room에서 데이터베이스의 테이블을 정의하기 위해 @Entity 어노테이션을 사용합니다. Kotlin의 데이터 클래스를 사용하여 간단하게 엔티티를 정의할 수 있습니다.

@Entity(tableName = "users")
data class User(
    @PrimaryKey val id: Int,
    @ColumnInfo(name = "name") val name: String
)

DAO 생성하기

데이터베이스 액세스 객체(DAO)는 데이터베이스에 대한 작업을 정의하는 인터페이스입니다. 아래와 같이 Kotlin에서 DAO를 정의할 수 있습니다.

@Dao
interface UserDao {
    @Query("SELECT * FROM users")
    fun getAll(): List<User>

    @Insert
    fun insert(user: User)

    @Delete
    fun delete(user: User)
}

Room 데이터베이스 초기화

데이터베이스를 초기화하기 위해 RoomDatabase 클래스를 상속받은 추상 클래스를 만들고, 데이터베이스의 인스턴스를 반환하는 메서드를 정의합니다.

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

데이터베이스 조작하기

이제 데이터베이스를 조작할 수 있습니다. 액티비티나 프래그먼트에서 아래와 같이 데이터베이스를 초기화하고, 데이터를 추가하거나 조회할 수 있습니다.

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

GlobalScope.launch {
    val userDao = db.userDao()
    userDao.insert(User(1, "John Doe"))
    val users = userDao.getAll()
    // 사용자 목록 처리
}

결론

Room 데이터베이스를 Kotlin으로 쉽게 사용하는 방법을 살펴보았습니다. Room을 사용하면 보일러플레이트 코드를 최소화하고 안드로이드 앱에서 데이터베이스를 효과적으로 관리할 수 있습니다. Kotlin과 Room을 함께 사용하여 안드로이드 앱의 데이터베이스 관리를 보다 편리하게 할 수 있습니다.

위에 소개한 것 이외에도 Room 라이브러리에 대한 더 많은 기능들이 있으니, 자세한 내용은 Android Developer 사이트를 참고하십시오.