[kotlin] Room Persistence Library 사용법

Room Persistence Library는 안드로이드 앱에서 SQLite 데이터베이스와의 상호 작용을 보다 편리하게 만들어주는 라이브러리입니다. 이 라이브러리를 사용하면 데이터베이스에 쉽게 접근하고 데이터를 관리할 수 있습니다.

기본 설정

Room Persistence Library를 사용하기 위해서는 먼저 Gradle 파일에 다음 의존성을 추가해야 합니다.

implementation "androidx.room:room-runtime:2.3.0"
annotationProcessor "androidx.room:room-compiler:2.3.0"

그 후, 앱의 Application 클래스에서 Room 데이터베이스를 초기화해야 합니다.

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

Entity 정의

Room 데이터베이스에서 관리할 데이터를 정의하기 위해 Entity 클래스를 작성해야 합니다. 예를 들어, 사용자(Users)에 대한 Entity 클래스는 다음과 같이 작성될 수 있습니다.

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

DAO 작성

Data Access Object(DAO)는 데이터베이스에 접근하여 실제 CRUD(Create, Read, Update, Delete) 작업을 수행하는 메서드를 정의하는 인터페이스입니다.

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

    @Query("SELECT * FROM user WHERE id = :userId")
    fun getUserById(userId: Int): User

    @Insert
    fun insert(user: User)

    @Update
    fun update(user: User)

    @Delete
    fun delete(user: User)
}

데이터베이스 사용

이제 Room 데이터베이스를 사용하여 데이터를 추가, 조회, 수정 및 삭제할 수 있습니다.

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

val userDao = db.userDao()

// 사용자 추가
val user = User(1, "John Doe", 25)
userDao.insert(user)

// 모든 사용자 조회
val allUsers = userDao.getAll()

// 사용자 수정
user.name = "Jane Doe"
userDao.update(user)

// 사용자 삭제
userDao.delete(user)

Room Persistence Library를 사용하면 데이터베이스 관련 작업을 보다 쉽게 처리할 수 있으며, 코드의 가독성과 유지보수성을 높일 수 있습니다.

더 많은 정보는 Room Persistence Library 공식 문서를 참고할 수 있습니다.