[android] 안드로이드 Room Database의 관계형 데이터베이스 사용법
안드로이드 앱에서 데이터를 효율적으로 관리하기 위해 관계형 데이터베이스를 사용하는 것은 매우 중요합니다. 안드로이드에서 관계형 데이터베이스를 구현하는 방법 중 하나는 Room 라이브러리를 사용하는 것입니다. Room은 SQLite 데이터베이스 위에 구축된 안드로이드 아키텍처 컴포넌트 라이브러리로, 간편한 인터페이스와 강력한 기능을 제공합니다.
Room Database 설정하기
Room 데이터베이스를 설정하려면 다음 단계를 따릅니다.
- 의존성 추가: 먼저
build.gradle
파일에 Room과 관련된 의존성을 추가해야 합니다.
implementation "androidx.room:room-runtime:2.3.0"
annotationProcessor "androidx.room:room-compiler:2.3.0"
- 데이터베이스 클래스: 데이터베이스를 나타내는 추상 클래스를 작성해야 합니다. 이 클래스에는 앱에서 사용할 데이터베이스와 연결된 모든 엔티티 및 데이터베이스 버전을 정의해야 합니다.
@Database(entities = arrayOf(User::class, Post::class), version = 1)
abstract class MyAppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
abstract fun postDao(): PostDao
}
- 데이터 액세스 객체 및 엔티티 생성: 각 테이블의 데이터 액세스 객체(DAO)와 엔티티를 생성합니다.
@Entity
data class User(
@PrimaryKey val uid: Int,
@ColumnInfo(name = "user_name") val userName: String
)
@Dao
interface UserDao {
@Query("SELECT * FROM user")
fun getAll(): List<User>
// 기타 메서드 정의
}
관계형 데이터베이스 사용하기
Room은 다양한 방법으로 데이터베이스 간의 관계를 정의하고 사용할 수 있습니다. 예를 들어, 부모-자식 관계, 일대다 관계 등을 지원하며, @Relation
어노테이션을 사용하여 관계형 데이터를 쉽게 쿼리할 수 있습니다.
data class UserWithPosts(
@Embedded val user: User,
@Relation(
parentColumn = "uid",
entityColumn = "user_id"
)
val posts: List<Post>
)
위 코드는 User
와 Post
테이블 간의 일대다 관계를 나타내며, User
와 Post
를 함께 쿼리할 수 있도록 합니다.
안드로이드 Room Database의 관계형 데이터베이스 사용법을 익혔다면, 앱에서 데이터를 효율적으로 관리하고 쿼리할 수 있어 더 나은 사용자 경험을 제공할 수 있을 것입니다.