[android] 안드로이드 Room Database의 라이브 데이터 사용법

Room 라이브러리는 안드로이드 앱에서 SQLite 데이터베이스를 쉽게 사용할 수 있도록 해주는 라이브러리입니다. Room은 라이브 데이터를 사용하여 데이터베이스의 변화를 관찰하고 앱 UI를 업데이트하는 데 사용될 수 있습니다.

이번 포스트에서는 안드로이드 앱에서 Room 라이브 데이터를 사용하는 방법을 알아보겠습니다.

1. 의존성 추가

Room 라이브러리를 사용하기 위해서는 먼저 앱의 build.gradle 파일에 다음과 같이 Room 라이브러리 의존성을 추가해야 합니다.

dependencies {
    implementation "androidx.room:room-runtime:2.4.0"
    annotationProcessor "androidx.room:room-compiler:2.4.0"
}

2. 엔티티 및 DAO 생성

데이터베이스의 테이블을 표현하는 엔티티 클래스와 데이터베이스 액세스 객체(DAO)를 정의해야 합니다.

예를 들어, 사용자 정보를 다루는 데이터베이스 테이블을 만들고 액세스하는 DAO를 생성하려면 다음과 같이 코드를 작성할 수 있습니다.

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

@Dao
interface UserDao {
    @Query("SELECT * FROM user")
    fun getAllUsers(): LiveData<List<User>>

    @Insert
    suspend fun insertUser(user: User)
}

3. 데이터베이스 클래스 생성

다음으로는 데이터베이스 클래스를 생성해야 합니다. 이 클래스는 RoomDatabase를 확장하고 DAO 인터페이스에 대한 인스턴스를 얻는 메서드를 제공해야 합니다.

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

4. 라이브 데이터 관찰

이제 생성한 UserDao를 사용하여 라이브 데이터를 관찰할 수 있습니다. 라이브 데이터를 관찰하면 데이터베이스의 변경 사항을 쉽게 감지하고 UI를 업데이트할 수 있습니다.

class MyActivity : AppCompatActivity() {
    private lateinit var userDao: UserDao

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_my)

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

        userDao = db.userDao()

        userDao.getAllUsers().observe(this, { users ->
            // 라이브 데이터 변경에 따른 UI 업데이트
        })
    }
}

이제 안드로이드 Room 라이브 데이터를 사용하여 데이터베이스 변경을 감지하고 UI를 업데이트하는 방법에 대해 알아보았습니다.

더 많은 정보를 원하시면 Android Developer 사이트를 참고하시기 바랍니다.