티스토리 뷰
SQLite 에서 ROOM 까지 (9) - Architecture Components 구성을 위한 Repository, ViewModel 추가하기
parkho79 2020. 9. 15. 08:59이번 포스팅에서는 구글이 권장하는 Architectur Components 구성을 위한 Repository, ViewModel 을 추가할 것이다.
참고로, 지난 포스팅 내용은 하단과 같다.
- UI, DB 생성, CRUD, column 추가, DB 확인
[Android/Database] - SQLite 에서 ROOM 까지 (2) - UI 구성
[Android/Database] - SQLite 에서 ROOM 까지 (3) - SQLiteOpenHelper
[Android/Database] - SQLite 에서 ROOM 까지 (4) - SQLite 를 이용한 CRUD
[Android/Database] - SQLite 에서 ROOM 까지 (5) - SQLite 로 생성된 기존 DB 에 column 추가하기
[Android/Database] - SQLite 에서 ROOM 까지 (6) - DB 확인하기
- ROOM, ROOM 의 3구성요소 추가
[Android/Database] - SQLite 에서 ROOM 까지 (7) - ROOM 이란?
[Android/Database] - SQLite 에서 ROOM 까지 (8) - ROOM 의 3 구성요소(Database, Entity, Dao) 추가하기
Android Architecture Components
하단은 Android 권장 앱 아키텍처다.
꼭 이렇게 하라는건 아니지만 activity/fragment 에서 모든 코드를 작성하지 않고 최대한 분리하여 가볍게 유지하자는 취지이다.
(구글은 이를 '관심사 분리' 라고 한다.)
출처 : https://developer.android.com/topic/libraries/architecture/images/final-architecture.png
Step 5: Repository class 추가하기
Repository 는 여러 데이터(persistent model(DB), web service, cache, etc.) 에 접근할 수 있는 중재자 역할을 하는 클래스다.
- Repository 는 data operation 을 handling 하는 책임이 있어 앱에 명확한 API 를 제공한다.
- Repository 모듈이 필요없어보지만 repository 를 사용함으로서 data 를 추상화 하여, ViewModel 에서는 data가 어떻게 fetch 되었는지 알 필요가 없도록 한다.
Step 6: ViewModel class 추가하기
ViewModel 은 UI에 관련된 데이터를 유지, 관리하기 위한 클래스다.
- Repository 와 UI 사이에 통신 역할을 한다.
- ViewModel 은 activity/fragment 보다 긴 lifeCycle 을 가지고 있어 화면 회전과 같은 상태 변화에도 이스턴스를 그대로 유지하는 특성이 있어 데이터가 유지된다.
Source code
https://github.com/parkho79/FromSQLiteToRoom_3
'Android > Database' 카테고리의 다른 글
SQLite 에서 ROOM 까지 (11) - ROOM 을 이용한 CRUD (0) | 2020.10.05 |
---|---|
SQLite 에서 ROOM 까지 (10) - SQLite 에서 ROOM 으로 migration 설정하기 (0) | 2020.09.21 |
SQLite 에서 ROOM 까지 (8) - ROOM 의 3 구성요소(Database, Entity, Dao) 추가하기 (0) | 2020.09.09 |
SQLite 에서 ROOM 까지 (7) - ROOM 이란? (0) | 2020.09.01 |
SQLite 에서 ROOM 까지 (6) - DB 확인하기 (0) | 2020.08.25 |
- Total
- Today
- Yesterday
- 채굴앱
- task 생성
- 무료 채굴
- 안드로이드 서비스
- onCreateContextMenu
- task
- RoomDatabase
- 리워드 어플
- WEMIX
- Android Service
- StartService
- 앱테크 추천
- StringUtils
- android flag activity
- onContextItemSelected
- 앱테크
- Intent
- M2E
- 무료채굴
- BroadcastReceiver
- mPANDO
- p2e
- notifyDataSetChanged
- android task
- android activity flag
- registerForContextMenu
- android intent
- 리워드앱
- bindservice
- 안드로이드 인텐트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |