Android Kotlin DB - AppDataBase 데이터베이스 생성 (4)
Notepad96
·2020. 12. 7. 13:25
0. 이전 글
1. Database 생성
이전 글들에서 테이블의 구조를 정의하고 DAO를 생성하였다.
이제 다음 단계로 이것들을 사용하여 Database를 생성한다.
Room Database를 생성하기 위해서는 RoomDatabase를 상속받아야만 한며
Room.databaseBuilder(
applicationContext,
AppDatabase::class.java, "database-name"
).build()
위 코드처럼 databaseBuilder를 사용하여 생성할 수 있다.
2. DB 접근 인스턴스 (AppDataBase.kt)
@Database(entities = arrayOf(Book::class) ,version = 1)
abstract class AppDataBase : RoomDatabase() {
abstract fun bookDao() : BookDao
companion object {
private var Instance: AppDataBase? = null
fun getInstance(context: Context): AppDataBase? {
if(Instance == null) {
synchronized(AppDataBase::class) {
Instance = Room.databaseBuilder(
context,
AppDataBase::class.java,
"hanja"
).build()
// migration // .addMigrations(MIGRATION_1_2)
}
}
return Instance
}
fun deleteInstance() {
Instance = null
}
// 마이그레이션 부분 (생략)
val MIGRATION_1_2 = object : Migration(1, 2) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("CREATE TABLE `books2` (`id` LONG, `name` TEXT, `writer` TEXT, `price` INTEGER, " +
"PRIMARY KEY(`id`))")
}
}
}
}
- @Database 어노테이션을 사용하여서 Entity와 Database Version을 지정해 준다.
- DAO를 사용하기 위하여 bookDao를 선언한다.
- Database 인스턴스의 중복 생성을 방지하기 위하여 싱글톤 패턴으로 생성한 후 getInstance를 사용하여 객체를 받을 수 있도록 만든다.
Room.databaseBuilder의 3번 째 인수로는 데이터베이스의 이름이 들어간다.
해당 예시에서는 hanja로 데이터베이스를 생성하였으며
다음과 같이 hanja 이름을 갖는 데이터베이스가 생성된 것을 확인할 수 있다.
※ Database Inspector 창 띄우기
[View] - [Tool Windows] - [Database Inspector]
싱글톤 패턴으로 생성하였기 때문에 다음과 같이 생성, 접근하여 Database의 Read/Write가 가능하다.
3. 참 조
'Android' 카테고리의 다른 글
Android Kotlin - AlertDialog(알림창) 기본 및 커스텀 (0) | 2021.08.22 |
---|---|
Android Kotlin DB - insert, delete, update, search(삽입, 삭제, 업데이트, 탐색) (5) (0) | 2020.12.07 |
Android Kotlin DB - DAO를 사용하여 데이터 접근 (3) (0) | 2020.12.07 |
Android Kotlin DB - Table 정의 (2) (0) | 2020.12.06 |
Android Kotlin DB - Room을 사용하여 데이터베이스 사용 (1) (0) | 2020.12.06 |