[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 사이트를 참고하시기 바랍니다.