[kotlin] 룸 데이터베이스에서 쿼리 결과를 LiveData로 사용하기

안녕하세요! 이번에는 안드로이드 앱에서 룸(Room) 데이터베이스를 사용하여 쿼리 결과를 LiveData로 다루는 방법에 대해 알아보겠습니다.

룸(Room) 라이브러리 소개

룸(Room)은 안드로이드 앱에서 SQLite 데이터베이스를 쉽게 사용할 수 있도록 도와주는 라이브러리입니다. 룸은 SQLite 데이터베이스에 접근하고 관리하는 데 필요한 여러 가지 기능을 제공하여 개발자가 데이터베이스 작업에 대해 더 이해하기 쉽도록 도와줍니다.

쿼리 결과를 LiveData로 변환하기

룸 라이브러리에서는 쿼리 결과를 LiveData로 변환하여 데이터베이스 변경 사항을 쉽게 감지하고 화면에 동적으로 반영할 수 있습니다.

룸에서 LiveData를 사용하려면 다음과 같은 단계를 따릅니다.

  1. DAO(Data Access Object) 인터페이스 작성: 먼저 데이터베이스에 대한 액세스를 위한 DAO 인터페이스를 작성합니다.

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

    위의 코드에서 getAllUsers() 메서드의 반환 유형이 LiveData<List<User>>입니다. 이렇게 함으로써 쿼리 결과가 LiveData로 반환됩니다.

  2. 뷰모델(ViewModel)에서 LiveData 사용: 이후 뷰모델(ViewModel)에서 해당 쿼리 메서드를 사용하고 호출한 후 반환된 LiveData를 관찰(observing)하여 데이터베이스 변경 사항을 감지할 수 있습니다.

     class UserViewModel(private val userDao: UserDao) : ViewModel() {
         val allUsers: LiveData<List<User>> = userDao.getAllUsers()
     }
    

이제 룸 데이터베이스에서 쿼리 결과를 LiveData로 다루는 방법을 알게 되었습니다. LiveData를 사용하면 데이터베이스 변경을 실시간으로 감지하여 앱의 UI를 업데이트하는 데 효과적으로 활용할 수 있습니다.

참고 문헌:

더 많은 정보를 원하신다면, 언제든지 물어주세요!