Android ROOM 자료가 입력된 DB 사용하기

개요

이전에 다루었던 Android ROOM 초기 자료 입력하기 글에서는 적은 양의 자료에만 적용할 수 있습니다. 자료가 많은 경우 텍스트 파일을 읽어 DB에 입력하는 방법을 생각해 볼 수 있습니다. 또 서버에 연결해서 자료를 받아와 입력하는 등 여러가지 방법이 있을 수 있습니다. 그러나 앱에서 처리하게 되면 모든 사용자들이 입력이 끝날 때 까지 기다려야 하는 문제가 있습니다.

DB에 입력되는 자료가 고정되어 있고 양이 많은 경우 개발 시 미리 입력해 놓은 DB를 적용하면 간편합니다. 이번글에서는 그 방법을 알아보도록 하겠습니다.

데이터 미리 채우기

SQLite DB에 자료를 입력하는 방법은 여러가지가 있습니다. 필자는 Android Studio 에 있는 Database Inspector 를 이용해서 다량의 자료를 DB에 입력했습니다. 미리 입력된 DB를 사용하는 방법은 개발자 문서에 잘 설명되어 있습니다.

DB 파일 준비

필자는 에뮬레이터에 저장되어 있는 DB 파일을 Device File Explorer 로 접근해서 로컬 PC에 저장했습니다. 그 다음 Android Studio 에서 assets 폴더를 생성하고 DB 파일을 복사했습니다.

assets 폴더 하위에 추가한 DB 파일
assets 폴더 하위에 추가한 DB 파일

코드추가

DB 초기 생성 부분에 다음과 같이 코드를 추가합니다.

fun getInstance(context: Context): yourDB? {
    if (INSTANCE == null) {
        synchronized(yourDB::class) {
            INSTANCE = Room.databaseBuilder(context.applicationContext,
                yourDB::class.java, "your.db")
                .addCallback(dbCallback)
                .createFromAsset("your.db")
                .fallbackToDestructiveMigration()
                .build()
        }
    }
    return INSTANCE
}

이렇게 하면 미리 자료를 입력해 놓은 DB 파일을 이용하게 됩니다. 앱에서 별도로 자료를 입력하는 과정을 수행할 필요가 없어지게 됩니다. 단, 정의된 Entity 와 미리 자료가 채워진 DB 파일의 구조가 같아야 합니다.

이번글에서는 미리 준비된 DB 파일을 ROOM 을 사용한 프로젝트에 적용하는 방법을 알아보았습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Time limit is exhausted. Please reload the CAPTCHA.