brunch

You can make anything
by writing

C.S.Lewis

by 이종우 Peter Lee Oct 07. 2019

Android Local Database Tricks

with Kotlin and ObjectBox.


Kotlin 및 ObjectBox를 사용한 Android 로컬 데이터베이스 트릭.







라이언 고든 턴 쇼              

수행원




3 월 10 일 · 3 분 읽음







많은 JSON 데이터 청크를 Android의 로컬 데이터베이스에 저장하는 간단한 방법을 찾고 있다면 더 이상 보지 마십시오. REST 온라인 데이터베이스에서 대량의 데이터 청크에 액세스하고 나중에 오프라인에서 사용하기 위해 로컬로 저장해야하는 오프라인 요구 사항을 충족해야 할 때가 너무 많지만 너무 많은 양의 상용구 코드를 작성하여 수행하지 않으려는 경우 우리는 이것을 간단하고 가장 효과적으로 수행하는 방법을 원합니다.

여기서는 Shared Preferences 또는 긴 ORM 매핑을 수행하거나 데이터 클래스에 대한 사용자 지정 변환기를 만들지 않고도 대용량 데이터를 로컬 DB에 저장하는 매우 간단하고 쉬운 방법을 제시합니다. 공유 환경 설정은 하나의 옵션이지만 일반적으로 설정과 같은 작은 데이터를 저장하는 데만 사용됩니다. 다른 단점은 큰 데이터가 공유 환경 설정에 저장되면 공유 환경 설정 데이터에 다시 액세스하는 데 시간이 오래 걸린다는 것입니다.

ObjectBox에 오신 것을 환영합니다. ObjectBox 란 무엇입니까?            




"); background-size: 1px 1px; background-position: 0px calc(1em + 1px);">ObjectBox 는 IoT 및 모바일 장치를 위해 고유하게 구축 된 객체를 유지하는 정말 멋진 초고속 객체 지향 모바일 데이터베이스입니다. 많은 반복적 인 작업을 피하고 데이터에 대한 간단한 인터페이스를 제공합니다. 그것은 지금까지 SQLite 데이터베이스를 상당히 빠르게 대체하는 안드로이드 엔지니어링 세계에서 채택 된 것으로 보입니다.

다음은 ObjectBox를 빠르게 설정하려는 개발자를위한 빠르고 간단한 솔루션이며 DB의 모든 데이터 개체에 대한 사용자 지정 변환기를 작성하지 않고도 데이터를 빠르게 저장할 수있는 방법이 있습니다.

시작하겠습니다 — 먼저 ObjectBox를 설치하십시오.

루트 build.gradle의 프로젝트에 추가하십시오.  

앱 build.gradle 모듈에서 이것을 추가하십시오.  

당신의 의존성에 이것을 추가하십시오 :  

완료되면 ObjectBox를 초기화하고 BoxStore 참조를 생성하려고합니다.

Application 클래스에서 다음과 같이 작성하십시오.  

그런 다음 모델에서 이와 같이 ObjectBox 싱글 톤을 만듭니다.  

이제 프로젝트에서 ObjectBox를 초기화했으며 프로젝트의 BoxStore ObjectBox에 액세스 할 수 있습니다.

이제 JSON 데이터를 다루겠습니다.JSON을 데이터 모델로 빠르게 변환하는 방법을 모르는 경우 "); background-size: 1px 1px; background-position: 0px calc(1em + 1px);">여기 내 기사를 읽으 "); background-size: 1px 1px; background-position: 0px calc(1em + 1px);">십시오 . 기본적으로 Pojo Generator를 사용하여 JSON 데이터를 Kotlin 데이터 모델로 변환하십시오.

모든 것이 완료되고 API 호출 및 서비스가 설정 및 완료되면 다른 데이터 클래스를 작성하고이를 DataObjectBox라고합니다.  

이 클래스에서 원하는만큼의 "데이터"문자열 속성을 가질 수 있으며 원하는대로 이름을 지정할 수 있지만 하나의 큰 페이로드 덤프가 있으면 하나만 필요합니다. data 변수는 모든 데이터를 JSON 페이로드에 대한 하나의 긴 문자열로 보유합니다.

이제 재미있는 부분이 들어옵니다.

당신의 활동에서.  

보시다시피 JSON 덤프를 검색 한 다음 Gson의 도움으로 원래 객체에서 문자열로 직렬화 해제 한 다음 payloadBox 데이터 속성 및 비올라에 덤프합니다. 이제 앱에서 언제든지 해당 데이터에 액세스 할 수 있습니다.

데이터에 다시 액세스하기 위해 간단히이 작업을 수행합니다.  

이제 데이터를 가지고 놀아야 할 때마다! (payloadDataOriginalObject) — ResponseMainDataDTO가 최상위 데이터 클래스가됩니다.

이 방법을 사용하면 모든 데이터 클래스에 대한 사용자 지정 변환기 및 엔터티를 작성할 필요가 없어 전체 ORM 매핑 프로세스가 제거됩니다.

쓰기:  

Cheerio와 행복한 코딩!

작가의 이전글 [번역] 단순 다중 선형회귀을 위한 파이썬
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari