[android] 안드로이드 Room Database의 사용법
목차
Room Database란?
Room은 안드로이드 앱에서 SQLite 데이터베이스를 쉽게 사용할 수 있도록 제공되는 라이브러리이다. Room은 SQLite의 기능을 추상화하여 더 편리하게 사용할 수 있도록 도와준다.
Room Database 설정
앱 모듈의 build.gradle
파일에 아래의 의존성을 추가한다.
implementation "androidx.room:room-runtime:2.4.0"
annotationProcessor "androidx.room:room-compiler:2.4.0"
Entity 생성
데이터베이스의 테이블을 나타내기 위해 Entity를 만들어야 한다. Entity 클래스는 데이터베이스의 각 열을 필드로 표현하고, 기본 키를 나타내는 어노테이션을 사용하여 식별한다.
예시:
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity
data class User(
@PrimaryKey val id: Int,
val name: String
)
DAO 생성
DAO(Data Access Object)는 데이터베이스에 접근하기 위한 메서드를 제공한다. 즉, DAO는 데이터베이스에 대한 CRUD(Create, Read, Update, Delete) 작업을 정의한다.
예시:
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query
@Dao
interface UserDao {
@Query("SELECT * FROM user")
fun getAll(): List<User>
@Insert
fun insert(user: User)
}
Database 클래스 생성
RoomDatabase를 상속받는 데이터베이스 클래스를 만든다. 이 클래스에는 데이터베이스와 관련된 설정 및 DAO의 인스턴스를 얻을 수 있는 메서드를 정의해야 한다.
예시:
import androidx.room.Database
import androidx.room.RoomDatabase
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
Room Database 사용
Room 라이브러리를 사용하여 데이터베이스를 초기화하고, DAO를 통해 데이터를 추가하거나 조회할 수 있다.
예시:
val db = Room.databaseBuilder(
applicationContext,
AppDatabase::class.java, "database-name"
).build()
val userDao = db.userDao()
val users = userDao.getAll()
이제, 안드로이드 앱에서 Room 데이터베이스를 사용하는 방법을 알게 되었다. Room을 사용하면 SQLite 데이터베이스를 쉽게 다룰 수 있으며, 데이터베이스와 관련된 코드를 간결하게 관리할 수 있다.