[kotlin] Jetpack Compose에서 데이터베이스 사용하기

안녕하세요! 이번에는 Jetpack Compose에서 데이터베이스를 사용하는 방법에 대해 알아보겠습니다. 데이터베이스는 안드로이드 앱에서 구조화된 데이터를 저장하고 관리하는 데에 사용됩니다. Jetpack Compose는 안드로이드 UI를 작성하기 위한 모던한 툴킷으로, 데이터베이스를 통합하여 앱의 상태와 UI를 관리하는 것이 쉽습니다.

1. Room 라이브러리 추가

Room은 안드로이드의 데이터베이스 라이브러리로, SQLite를 래핑하여 사용하기 쉽도록 제공합니다. 먼저 build.gradle 파일에 Room 라이브러리를 추가합니다.

implementation "androidx.room:room-runtime:2.4.0"
implementation "androidx.room:room-ktx:2.4.0"
kapt "androidx.room:room-compiler:2.4.0"

2. 엔티티 및 DAO 생성

데이터베이스의 테이블을 정의하기 위해 엔티티 클래스를 생성하고, 해당 테이블에 접근하기 위한 Data Access Object(DAO)를 정의합니다.

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

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

    @Insert
    fun insert(user: User)
}

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

다음으로, 데이터베이스 클래스를 생성하여 엔티티와 DAO를 연결합니다.

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

4. 데이터베이스 초기화 및 사용

마지막으로, 데이터베이스를 초기화하고 사용할 수 있도록 앱의 Application 클래스 또는 다른 적절한 위치에서 데이터베이스를 생성합니다.

val database = Room.databaseBuilder(context, AppDatabase::class.java, "app-database")
    .build()

val userDao = database.userDao()
val userList = userDao.getAll()

마무리

Jetpack Compose에서 데이터베이스를 사용하는 방법에 대해 알아보았습니다. 데이터베이스를 통합하여 앱의 상태를 관리하고 사용자 인터페이스를 업데이트하는 것이 편리하게 되며, Room 라이브러리를 사용하여 데이터베이스를 구축하는 방법도 살펴보았습니다. 여러분의 안드로이드 앱에 Jetpack Compose와 데이터베이스를 효율적으로 활용해 보시기 바랍니다.

참고문헌: