참고 사이트 : https://developer.android.com/training/data-storage/room/defining-data?hl=ko
Room은 SQLite의 추상레이어로 SQLite를 다루기 더 쉽고 편리하게 해줍니다.
// 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 관련 정보 : 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 아키텍처 다이어그램에서 확인할 수 있습니다.
참고: 앱이 단일 프로세스에서 실행되면 AppDatabase 객체를 인스턴스화할 때 싱글톤 디자인 패턴을 따라야 합니다. 각 Room Database인스턴스는 리소스를 상당히 많이 소비합니다. 그리고 단일 프로세스 내에서 여러 인스턴스에 액세스할 필요가 거의 없습니다.
앱이 여러 프로세스에서 실행되면 데이터베이스 빌더 호출에 enableMultiInstanceInvalidation()을 포함합니다. 이렇게 하면 각 프로세스에 AppDatabase 인스턴스가 있을 때 한 프로세스에서 공유 데이터베이스 파일을 무효화할 수 있으며 이 무효화는 다른 프로세스 내의 AppDatabase 인스턴스로 자동 전파됩니다.
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 등으로 활용하여 추가 구현이 가능합니다.
[Java:Android Studio] 만들면서 배우는 Java로 Intro 화면 만들기 (0) | 2021.07.20 |
---|---|
[Java:Android Studio] 만들면서 배우는 Java로 ViewBinding 활용하기 (0) | 2021.07.20 |
[Android Studio 08] Splash로 인트로 화면 만들기 Kotlin (0) | 2021.06.08 |
[Android Studio 07] 인트로 화면 만들기 Kotlin/Intent 활용 (0) | 2021.06.06 |
[Android Studio 06] Kotlin Bottom Navigation 02 (0) | 2021.06.06 |