안드로이드/공부

안드로이드 Room,LiveData,ViewModel 예제(Codelaps)-1

바코더 2020. 4. 30. 19:29

https://codelabs.developers.google.com/codelabs/android-training-livedata-viewmodel/#0

 

Android fundamentals 10.1 Part A: Room, LiveData, and ViewModel

The data access object, or Dao, is an annotated class where you specify SQL queries and associate them with method calls. The compiler checks the SQL for errors, then generates queries from the annotations. For common queries, the libraries provide conveni

codelabs.developers.google.com

 안드로이드 코드랩에 Room,LiveData와 ViewModel 에 관한 순차적인 예제가 있어 순서대로 따라하면서 ViewModel에 관해 조금 더 공부하려고 합니다.

 

일단 1장부터 시작합니다.

 

1.What are the recommended Architecture Components? 

 

위의 추천되는 아키텍쳐 컴포넌트를 이용하는 앱의 짧은 다이어그램을 보면 각각의 컴포넌트들에 대한 구성요소와 설명들이 있습니다. RoomDatabase는 데이터를 보관하고 DAO(data access object)를 이용해서 접근하는 백단이 일단 보입니다. 이러한 각 구성요소들에 대한 설명들을 짧게 살펴보면

 

 Entity : 아키텍처 구성요소에서 Entity는 데이터 베이스 테이블을 설명하는 Annotation 클래스 입니다.

 

 SQLite database: 디바이스에서는 데이터가 SQLite database에 저장된다. 

 

 DAO: data access object, SQL 쿼리를 맵핑해주는 function입니다. DAO 를 사용하면 코드들이 function을 호출하고 컴포넌트들이 나머지를 처리합니다.

 

 Room database: 헬퍼 클래스로 처리하던 일들을 DAO를 사용하여 쿼리를 실행하는 데이터베이스 클래스.

 

 Repository: 레파지토리는 웹서버 같은 원격 데이터들을 처리할 수 있는 클래스. 여러 데이터 원본을 관리하기 위해 생성.

 

 ViewModel: 데이터를 UI에 제공하고 레퍼지토리와 UI 사이의 커뮤니케이션을 담당해 UI와 데이터 처리를 분리하는 클래스

 

 LiveData: 옵저버 패턴에서 데이터를 홀드하는 클래스로 마지먹 캐쉬된 데이터의 버전을 가지고 있는 클래스, 데이터가 변할때 각 UI 컴포넌트로 데이터를 업데이트하고 LivaData는 엑티비티나 프래그먼트의 라이프사이클에 자동적으로 관리 합니다.

 

*각 컴포넌트에 대한 설명은 없는 실력으로 대충 번역한거라 정확하지 않습니다.