티스토리 뷰

300x250
300x250



이번 포스팅에서는 구글이 권장하는 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



728x90
댓글