[kotlin] Room 라이브러리의 쿼리문 작성 방법

Room은 Android 앱에서 SQLite 데이터베이스를 쉽게 사용할 수 있도록 도와주는 SQLite 개체 매핑 라이브러리입니다. Room을 사용하여 데이터베이스에 저장된 데이터를 조회하는 방법에 대해 살펴보겠습니다.

1. DAO 인터페이스 생성

Room에서는 데이터베이스 액세스 객체(DAO)를 사용하여 데이터베이스 작업을 수행합니다. DAO 인터페이스를 생성하고 다음과 같이 쿼리 메서드를 정의합니다.

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

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

위 코드에서 @Query 어노테이션을 사용하여 쿼리문을 지정하고, 메서드의 매개변수를 통해 동적인 값들을 전달할 수 있습니다.

2. 데이터베이스 생성

다음으로는 데이터베이스 객체를 생성합니다. 데이터베이스 클래스를 만들고, 해당 클래스에는 사용할 DAO 인터페이스를 포함시켜야 합니다.

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

3. 데이터 조회

마지막으로, 실제로 데이터를 조회하는 부분입니다. Repository 또는 ViewModel에서 DAO를 사용하여 데이터를 조회할 수 있습니다.

class UserRepository(private val userDao: UserDao) {
    fun getAllUsers(): List<User> {
        return userDao.getAllUsers()
    }

    fun getUserById(userId: Int): User {
        return userDao.getUserById(userId)
    }
}

위 코드에서는 Repository에서 DAO를 사용하여 데이터를 조회하는 예시를 보여주고 있습니다.

Room 라이브러리를 사용하여 데이터를 조회하는 방법에 대해 간단히 살펴보았습니다. 보다 복잡한 쿼리는 Room 라이브러리의 공식 문서를 참고하시기 바랍니다.


참고 문서: