[안드로이드스튜디오_문화][Data Layer]

기말 지하기포·2024년 1월 13일
0

#Data Layer Android Developer 공식문서
=> https://developer.android.com/topic/architecture/data-layer?hl=ko

Repository Pattern
-도메인 계층에서 필요한 기능만 제공

-데이터 방식이 설계에 영향을 미치는 걸 막아줄 수 있도록 가장 상위레벨에서 지켜주는 수문장이라고 표현 할 수 있다. 즉, 리포지터리라는 것은 저장방식이 어떻게 되는지를 감춰주기 위한 것이다. 데이터를 어떻게 얻오오고 로드하는 등의 명령을 내리는 상위 레벨의 창구라고 생각하면 된다.

-데이터 소스와 도메인 계층사이에 추상화 계층을 두어서 데이터에 접근하는 방식을 도메인 로직으로부터 분리시킨다. 이로서 데이토소스가 변경된다 하더라고 도메인 계층의 코드를 수정할 필요가 없도록 해준다.

-저장방식을 숨기는 것은 코드상에 다음과 같이 이루어져 있다. 데이터 접근에 대한 로직은 도메인 계층에서 추상화 되어있고 해당 인터페이스를 구체화한 코드는 데이터 레이어 내부에 위치한다.

Data Store Pattern
-실제로 데이터를 담당하는 부분을 의미이며 , 데이터 처리의 구현 방식을 감춰주는 그런 형태이다. 실제로 데이터를 읽고 쓰는 등의 작업을 진행하는 등의 낮은 수준의 작업이 일어나는 부분이다.

-데이터 처리의 구현 방식을 감춰줌으로서 Repository에 영향을 주지 않는다. 예를 들면 로컬DB를 Realm에서 Room으로 변경하여도 Repository 등에 영향을 주지 않은채로 동일한 인터페이스를 통해서 데이터 접근 방식을 제공 할 수 있게 해주고 다른 방식으로 저장이 된다든가 하는일들이 발생한다.

데이터 계층에 대한 중요 결정 사항

SSOT

-신뢰 할 수 있는 단 하나의 정보원(Single Source of Truth : SSOT)을 어디에 둘 것이가를 결정해야 한다.

-아래 목록중 한 가지를 선택해서 사용하면 된다.

-"서버로 부터 받는 정보"

  • 실시간 데이터나 최신 정보가 필요한 경우, 서버를 SSOT로 설정

-"로컬 DB"

  • 오프라인 지원이 중요하거나 데이터를 지속적으로 빠르게 접근해야 하는경우 로컬DB를 SSOT로 설정

-"캐시"

  • 빠른 데이터 접근이 필요하며, 일시적인 데이터 저장이면 충분한 경우 캐시를 SSOT로 설정 : 사용해 본적은 없어서 잚 모르겠음..ㅠㅠ

-"Data Store"(비동기 가능)

  • SharedPreference(비추)를 대체하기 위해서 만들어진 것으로 사용자 정의 데이터 타입을 사용하여 데이터를 저장 할 수 있고 , 데이터의 일관성 유지를 할 수 있게 해당 데이터 타입이 필요할 때 사용한다.

-"File"

  • 대용량 데이터나 특정 형식의 데이터(예: 사진 등)를 저장해야 하는 경우 파일 시스템을 SSOT로 설정.

-서버에서 정보가 내려오면 로컬 DB에 저장을 하고 데이터 계층은 끝이나고 UI 계층에서 로컬DB에서 Flow에서 흐르는 값을 이벤트를 받는 것처럼 할 수 있다.

생애주기

-거의 대부분 생애주기는 액티비티 또는 Fragment에서 벗어난 것이 좋

Activity 종료

-로콜 로딩만 일어난다 : 바로 취소
-원결 로딩만 일어난다 : 응답받고 취소
-저장 작업 , 저장을 향하는 작업 : 계속 진행

제일 좋은것은 독립적인 생애주기가 필요하다.

profile
포기하지 말기

0개의 댓글