[kotlin] 코틀린에서 Room 라이브러리 연동하기
목차
Room 라이브러리란?
Room은 안드로이드에서 실제 데이터베이스를 사용하여 영속적인 데이터를 저장하기 위한 라이브러리입니다. Room은 SQLite의 간편한 추상화를 제공하며, 데이터베이스에 접근하고 조작하는 과정을 단순화합니다.
Room 라이브러리 추가
프로젝트의 build.gradle 파일에 다음 의존성을 추가하여 Room 라이브러리를 사용할 수 있습니다.
dependencies {
implementation "androidx.room:room-runtime:2.3.0"
kapt "androidx.room:room-compiler:2.3.0"
}
데이터베이스 생성
Room의 핵심 구성 요소는 데이터베이스입니다. 데이터베이스는 RoomDatabase
클래스를 상속받아 구현합니다.
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
Entity 클래스 생성
Entity 클래스는 데이터베이스의 테이블을 나타내는 클래스입니다. @Entity
어노테이션을 사용하여 해당 클래스를 Entity로 지정합니다.
@Entity(tableName = "users")
data class User(
@PrimaryKey val id: Int,
val name: String,
val age: Int
)
DAO 클래스 생성
DAO(Data Access Object)는 데이터베이스에 접근하기 위한 메서드를 포함하는 인터페이스입니다. DAO는 @Dao
어노테이션을 사용하여 해당 인터페이스를 DAO로 지정합니다.
@Dao
interface UserDao {
@Query("SELECT * FROM users")
fun getAll(): List<User>
@Insert
fun insert(user: User)
@Delete
fun delete(user: User)
}
Room 데이터베이스 사용
데이터베이스 인스턴스를 생성하고 DAO를 사용하여 데이터베이스에 접근하고 조작할 수 있습니다.
val db = Room.databaseBuilder(applicationContext, AppDatabase::class.java, "my-database")
.build()
val userDao = db.userDao()
val users = userDao.getAll()
위의 코드에서는 데이터베이스를 생성하기 위해 databaseBuilder
메서드를 사용하고, 생성된 데이터베이스에서 userDao
를 가져와서 사용합니다. userDao
에서는 getAll()
메서드를 호출하여 모든 사용자를 가져올 수 있습니다.
이와 같은 방식으로 코틀린에서 Room 라이브러리를 사용하여 데이터베이스를 연동할 수 있습니다.