개복치개발자 강의는 아래의 링크에서 확인할 수 있습니다.
이번에는 ROOM에 대해서 알아보겠습니다.
공식문서에 있는 그림으로 가장 잘 표현이 되어 있습니다.
위에서 보여주는 그림에서
DAO(Data Access Objects), Entities
라고 2개가 나옵니다. 이 친구들 간단하게 생각해보면
DAO - 이름 그대로 Data에 접근(Access)하는 친구입니다. SQLite에서 Query날렸던 것 처럼 쿼리를 날려주는 곳인데, 아래와 같이 사용할 수 있습니다.
그리고 Entities같은 경우는 데이터베이스에 데이터 모델(스키마)를 정의해주는 곳이라고 생각해주시면 될 것 같습니다.
그렇다면 굉장히 간단한 예제를 통해서 어떻게 사용하는지 알아보겠습니다.
우선적으로 Gradle에 room을 implementation합니다.
// ROOM
def roomVersion = "2.4.0"
implementation("androidx.room:room-runtime:$roomVersion")
annotationProcessor("androidx.room:room-compiler:$roomVersion")
여기까지 하면 아래와 같은 에러가 나옵니다.
Cannot access database on the main thread since it may potentially lock the UI for a long period of time.
이 부분을 해결해주려면 gradle을 조금 수정해줘야하는데 아래와 같이 해주면 됩니다.
id 'kotlin-kapt'
// To use Kotlin annotation processing tool (kapt)
kapt("androidx.room:room-compiler:$roomVersion")
전체 gradle을 보면은 아래와 같이 나옵니다.
그리고 Entity / DAO / Database를 만들어주면 아래과 같이 나옵니다.
- 참조
https://developer.android.com/training/data-storage/room?hl=ko
https://developer.android.com/codelabs/android-room-with-a-view-kotlin?hl=ko#7
'Android Jetpack' 카테고리의 다른 글
Android Room - 5 (Room + ViewModel + ViewModelScope + LiveData) (0) | 2022.01.27 |
---|---|
Android Room - 4 (Room Muti Table / Show DB) (0) | 2022.01.22 |
Android Room - 2 (SQLite Simple Ex) (0) | 2022.01.21 |
Android Room -1 (Room vs SQLite) (0) | 2022.01.20 |
Android LiveData - 5 (Livedata Transformations map / switchMap) (0) | 2022.01.15 |