안녕하세요! 오늘은 안드로이드 앱에서 SQLite 데이터베이스를 사용하는 방법 중 하나인 룸(Room) 라이브러리에 대해 알아보겠습니다. 룸은 SQLite 데이터베이스를 더 쉽게 사용할 수 있도록 도와주는 라이브러리로, 데이터베이스의 스키마 변경, 쿼리 실행, 데이터베이스 연결 관리 등을 단순화하는 기능을 제공합니다.
룸의 핵심 구성 요소
룸 라이브러리는 세 가지 주요 구성 요소를 가지고 있습니다: Entity, DAO(데이터 액세스 객체), Database.
Entity
Entity는 데이터베이스 테이블을 나타내는 클래스입니다. 이 클래스는 @Entity
어노테이션을 사용하여 데이터베이스 테이블로 선언됩니다. 또한, 각 열은 클래스의 속성으로 표현되며, 각 속성은 @ColumnInfo
어노테이션을 사용하여 테이블의 열로 선언됩니다.
@Entity
data class User(
@PrimaryKey val uid: Int,
@ColumnInfo(name = "user_name") val userName: String
)
DAO
DAO는 데이터베이스에 액세스하기 위한 메서드를 포함하고 있는 인터페이스입니다. 각 메서드는 SQL 쿼리 형태로 정의되며, 룸 라이브러리는 이를 사용하여 실제 데이터베이스 액세스를 처리합니다.
@Dao
interface UserDao {
@Query("SELECT * FROM user")
fun getAll(): List<User>
@Insert
fun insert(user: User)
}
Database
Database는 데이터베이스에 대한 인터페이스를 정의하는 추상 클래스입니다. 이러한 클래스는 @Database
어노테이션을 사용하여 데이터베이스로 선언됩니다. 또한, 해당 클래스는 앱에서 사용할 데이터베이스 인스턴스를 나타내는 싱글톤 인스턴스를 가집니다.
@Database(entities = arrayOf(User::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
룸의 동작 방식
데이터베이스에 액세스하기 위해선 일반적으로 다음과 같은 단계를 거칩니다.
- 룸 데이터베이스를 초기화합니다.
- DAO 인터페이스를 사용하여 데이터베이스 작업을 수행합니다.
- 데이터베이스 트랜잭션을 처리합니다.
룸 라이브러리를 사용하면 이러한 데이터베이스 액세스 과정을 더욱 쉽고 효율적으로 처리할 수 있습니다.
룸 데이터베이스에 대한 기본 동작 방식과 주요 구성 요소에 대해 알아보았습니다. 룸은 안드로이드 앱에서 데이터베이스 연동을 위해 매우 유용한 도구로, 간단한 코드와 구조적인 기능을 통해 개발자들이 데이터베이스 액세스를 보다 쉽게 할 수 있도록 도와줍니다.
더 많은 정보와 상세한 사용 방법은 룸 공식 문서를 참고하시기 바랍니다.