Android Kotlin DB - AppDataBase 데이터베이스 생성 (4)

Notepad96

·

2020. 12. 7. 13:25

300x250

 

 

 

 


0. 이전 글

 

 

Android Kotlin DB - DAO를 사용하여 데이터 접근 (3)

0. 이전 글 Android Kotlin DB - Table 정의 (2) 0. 이전글 Android Kotlin DB - Room을 사용하여 데이터베이스 사용 (1) 1. Room Room은 SQLite에 대하여 추상화 레이어를 제공하여 원활한 데이터베이스 액세..

notepad96.tistory.com

 

 

 

 


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를 사용하여 객체를 받을 수 있도록 만든다.

 

 

Kotlin Singleton pattern - object

1. 싱글톤 패턴(Singleton Pattern) 싱글톤 패턴(Singleton Pattern)이란 프로그램에서 어느 객체를 단 한개의 인스턴스만 만들수 있도록 보장 하는 인스턴스를 말한다. 하나의 인스턴스만을 갖어야함으로

notepad96.tistory.com

 

Room.databaseBuilder의 3번 째 인수로는 데이터베이스의 이름이 들어간다.

 

해당 예시에서는 hanja로 데이터베이스를 생성하였으며

 

Database

다음과 같이 hanja 이름을 갖는 데이터베이스가 생성된 것을 확인할 수 있다.

 

 

※ Database Inspector 창 띄우기

 

[View] - [Tool Windows] - [Database Inspector]

 

 

 

 

싱글톤 패턴으로 생성하였기 때문에 다음과 같이 생성, 접근하여 Database의 Read/Write가 가능하다.

 

Database Read

 

 

 

 

 


3. 참 조

 

Room을 사용하여 로컬 데이터베이스에 데이터 저장  |  Android 개발자  |  Android Developers

Room 라이브러리를 사용하여 더 쉽게 데이터를 유지하는 방법 알아보기

developer.android.com

300x250