[kotlin] Room 라이브러리와 SQLite의 관계

안녕하세요! 오늘은 안드로이드 앱 개발에서 SQLite 데이터베이스를 쉽게 다룰 수 있도록 도와주는 Room 라이브러리에 대해 알아보겠습니다.

1. Room 라이브러리란?

Room은 안드로이드 앱에서 SQLite 데이터베이스를 쉽게 다루기 위한 라이브러리입니다. SQLite는 안드로이드에서 내부적으로 사용되는 경량 데이터베이스이며, Room은 이를 좀 더 사용하기 쉽게 추상화하여 제공합니다.

2. Room의 주요 구성 요소

Room 라이브러리는 크게 3가지 주요 구성 요소로 구성됩니다.

2.1. Entity

Entity는 SQLite 데이터베이스의 테이블을 나타내는 클래스입니다. 각각의 엔터티 클래스는 테이블에 대응되고, 클래스의 각 필드는 테이블의 열에 대응됩니다.

예를 들어, 다음은 사용자 정보를 담는 User 엔터티 클래스의 예시입니다.

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

2.2. DAO (Data Access Object)

DAO는 데이터베이스에 접근하여 데이터를 조작하는 메서드를 정의하는 인터페이스입니다. Room은 DAO를 통해 데이터베이스의 CRUD(Create, Read, Update, Delete) 연산을 수행합니다.

다음은 User 엔터티에 대한 DAO의 예시입니다.

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

    @Insert
    fun insert(user: User)

    @Delete
    fun delete(user: User)
}

2.3. Database

Database는 데이터베이스와 관련된 핵심 클래스로, 데이터베이스의 버전 관리와 데이터베이스 인스턴스를 포함하고 있습니다.

다음은 앞서 정의한 User 엔터티와 UserDao를 포함하는 데이터베이스 클래스의 예시입니다.

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

3. Room의 장점

Room 라이브러리를 사용하면 다음과 같은 장점을 얻을 수 있습니다.

그러므로, 안드로이드 앱에서 SQLite를 사용할 때는 Room 라이브러리를 활용하여 데이터베이스를 보다 쉽게 다룰 수 있습니다.

위 내용이 도움이 되기를 바라며, 추가적인 정보가 필요하다면 Room 공식 문서를 참고해보세요.