[kotlin] MVVM 아키텍처에서의 데이터베이스 처리 방법
MVVM(MVVM) 아키텍처는 Model-View-ViewModel을 나타내는 디자인 패턴으로, 안드로이드 앱 개발에 널리 사용됩니다. 이 아키텍처에서 데이터베이스 처리는 중요한 부분이며, 이를 효율적으로 수행하기 위해 몇 가지 접근 방법이 있습니다.
1. Room 라이브러리 사용
Room은 안드로이드에서 SQLite 데이터베이스를 더 쉽게 사용할 수 있도록 도와주는 라이브러리입니다. MVVM 아키텍처에서 Room을 사용하면 ViewModel이 Repository를 통해 데이터베이스와 상호작용할 수 있습니다. Repository는 데이터를 가져오고 변경하는 데 필요한 쿼리를 수행하며, 변경 사항을 ViewModel로 보냅니다.
@Entity
data class User(
@PrimaryKey val uid: Int,
@ColumnInfo(name = "first_name") val firstName: String?,
@ColumnInfo(name = "last_name") val lastName: String?
)
@Dao
interface UserDao {
@Query("SELECT * FROM user")
fun getAll(): List<User>
@Insert
fun insertAll(vararg users: User)
}
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
2. RxJava 또는 Kotlin Coroutines을 사용한 비동기 처리
데이터베이스 작업은 일반적으로 비동기적으로 수행되어야 합니다. RxJava 또는 Kotlin Coroutines를 사용하여 비동기 처리를 구현할 수 있습니다. ViewModel에서 비동기적으로 데이터베이스 작업을 수행하고, 작업이 완료되면 UI에 결과를 업데이트할 수 있습니다.
class MyViewModel(private val userRepository: UserRepository) : ViewModel() {
fun getUsers() {
viewModelScope.launch {
val users = userRepository.getUsers()
// UI 업데이트
}
}
}
MVVM 아키텍처에서는 데이터베이스 처리가 ViewModel에서 직접 이루어지지 않고, Repository를 통해 처리됩니다. 이를 통해 코드의 재사용성과 유지보수성을 향상시킬 수 있습니다.
따라서 안드로이드 앱을 개발할 때 MVVM 아키텍처와 Room 라이브러리, RxJava 또는 Kotlin Coroutines를 사용하여 데이터베이스 처리를 수행하는 것이 좋은 선택일 수 있습니다.