상세 컨텐츠

본문 제목

[Android Studio 09] Room DB Setting Kotlin

Kotlin|Java

by donggyu1998 2021. 6. 8. 01:50

본문

반응형

참고 사이트 : https://developer.android.com/training/data-storage/room/defining-data?hl=ko

Room은 SQLite의 추상레이어로 SQLite를 다루기 더 쉽고 편리하게 해줍니다.

💡 build.gradle에 Room 추가

    // Room Local
    def room_version = "2.3.0"
    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"

코드 : https://pastebin.com/dbKFEH6G

 

💡 PrimaryKey와 ColumnInfo 

PrimaryKey 관련 정보 : https://developer.android.com/reference/android/arch/persistence/room/PrimaryKey

ColumnInfo 관련 정보 : https://developer.android.com/reference/android/arch/persistence/room/ColumnInfo

 

코드 : https://pastebin.com/bQ5HL2X7

코드 : https://pastebin.com/U5nuDazd

저는 model packge를 만든 후  User, UserDao를 추가하였습니다. 

 

Room 데이터베이스를 사용하여 데이터베이스와 연결된 데이터 액세스 개체 또는 DAO를 가져옵니다. 그런 다음 앱은 각 DAO를 사용하여 데이터베이스에서 항목을 가져오고 항목의 변경사항을 다시 데이터베이스에 저장합니다. 마지막으로 앱은 항목을 사용하여 데이터베이스 내의 테이블 열에 해당하는 값을 가져오고 설정합니다.

Room의 다양한 구성요소 간의 이러한 관계는 아래 그림인 Room 아키텍처 다이어그램에서 확인할 수 있습니다.

💡 db > AppDatabase 

참고: 앱이 단일 프로세스에서 실행되면 AppDatabase 객체를 인스턴스화할 때 싱글톤 디자인 패턴을 따라야 합니다. 각 Room Database인스턴스는 리소스를 상당히 많이 소비합니다. 그리고 단일 프로세스 내에서 여러 인스턴스에 액세스할 필요가 거의 없습니다.

앱이 여러 프로세스에서 실행되면 데이터베이스 빌더 호출에 enableMultiInstanceInvalidation()을 포함합니다. 이렇게 하면 각 프로세스에 AppDatabase 인스턴스가 있을 때 한 프로세스에서 공유 데이터베이스 파일을 무효화할 수 있으며 이 무효화는 다른 프로세스 내의 AppDatabase 인스턴스로 자동 전파됩니다.

 

 

 

💡 MyApp과 db, model 연동

import android.app.Application
import androidx.room.Room
import com.example.myapplication.db.AppDatabase

class MyApp : Application() {

    companion object{
        private var context: MyApp? = null

        fun getAppDb(): AppDatabase? {
            return context?.let {
                Room.databaseBuilder<AppDatabase>(it, AppDatabase::class.java, "demo.db")
                    .build()
            }
        }
    }

    override fun onCreate() {
        super.onCreate()
        context = this
    }

}

코드 : https://pastebin.com/JwYiSY5y

 

위에처럼 모두 작성이 되었다면 기본 세팅은 완료되었습니다.

구현된 Room DB로 저장 후 Adapter, ListView, Recyclerview 등으로 활용하여 추가 구현이 가능합니다.

반응형

관련글 더보기