728x90
반응형
안드로이드에서 데이터는 데이터 클래스로 표현된다.
이 데이터는 함수 호출에 의해 접근되고 수정될 수도 있다.
그러나, 데이터베이스 세계에서는 데이터에 접근하고 수정하기 위해서는 entity와 query가 필요하다.
- 엔티티는 속성과 함께 데이터베이스에 저장할 객체나 개념을 의미한다.
우리의 앱 코드에서 테이블을 정의하는 entity class가 필요하다.
해당 클래스의 각 인스턴스는 해당 테이블의 행을 의미한다.
Entity class는 데이터베이스의 정보를 표시하고 상호 작용하는 방법을 Room에 알려주는 맵핑이 있다.
우리 앱에서 엔티티는 하룻밤 수면에 관한 정보를 가지고 있을 것이다. - 쿼리는 테이블(혹은 테이블 조합)의 정보 또는 데이터 요청이거나 데이터에 대한 작업을 수행하기 위한 요청이다.
일반적인 쿼리는 엔티티의 CRUD(create, read, update, delete)를 위한 것이다.
예를 들어, 쿼리를 실행하여 모든 수면 기록을 시작 순서로 정렬해 읽을 수 있다.
우리 앱의 UX는 몇몇 데이터를 로컬에 저장하여 큰 이점을 얻을 수 있다.
관련 데이터를 캐싱하면 사용자가 오프라인이더라도 앱을 즐길 수 있다.
앱이 서버에 의존한다면 캐싱은 사용자가 오프라인인 동안 로컬에 저장되는 내용을 수정하도록 허용한다.
앱이 다시 연결되면 그 캐시된 변경점을 백그라운드에서 서버와 동기화할 수 있다.
Room은 Kotlin 데이터 클래스을 SQLite 테이블에 저장할 수 있는 엔티티로,
함수 선언을 SQL 쿼리로 가져오기 위해 모든 작업을 수행한다.
각 엔티티를 annotated(주석이 달린) 데이터 클래스로,
엔티티와의 상호 작용은 annotated 인터페이스(Data Access Objet, DAO)로 정의해야만 한다.
Room은 이런 annotated 클래스를 사용해 데이터베이스에 테이블을 생성하고 데이터베이스에서 작동하는 쿼리를 생성한다.
이번 포스팅은 코드랩 챕터에서 개념부분 설명이 길어져 따로 구성해보았다.
728x90
반응형
'Android' 카테고리의 다른 글
Android RecyclerView ItemDecoration in Kotlin (0) | 2023.07.21 |
---|---|
Codelab으로 Room 알아보기 - 2. Create the SleepNight entity(ㄴ) (0) | 2023.07.09 |
Android Notification Max Count (0) | 2023.07.04 |
Android Notification 누적시키기 (0) | 2023.06.16 |
Android Deep Link 사용 시 겪은 에피소드 (1) | 2023.06.14 |