최근 안드로이드 웹툰 프로젝트를 GitHub에 완전 공개하면서
RxJava, RxAndroid, Realm 관련 작업을 반영해보기로 했습니다
Rx 자체는 별로 어려운 문제없이 진행했지만, Realm 이 가장 큰 문제였습니다.
별도의 설명은 Realm 공식 사이트를 참조하시면 됩니다.
별 이유없이 그냥 바꿔보자하는 마음이였습니다.
Sqlbrite 는 Square 사에서 발표한 SQLiteOpenHelper 를 Rx 스타일로 Wrapper 한 DB 사용 라이브러리입니다.
공식 설명은 아래와 같습니다.
A lightweight wrapper around SQLiteOpenHelper which introduces reactive stream semantics to SQL operation.
Sqlbrite 를 사용한 이유
DB 의 주체를 바꾸는 작업이였기때문에, 몇가지 고려해야할 사항이 있습니다.
이런 내용만 보면 눈치빠른 분이라면 Sqlite 에 있는 데이터를 Realm 으로 직접 넣는 방법밖에 없다는 점을 알 수 있습니다.
다행히 Realm 영문 사이트의 ADD-ONS
에 SqliteToRealm
라는 프로젝트가 참고 가능합니다.
위 GitHub Repository 의 ` SqliteHelper.java,
RealmHelper.java,
SqliteToRealm.java` 파일이 핵심 로직입니다.
Sqlite에 저장되어있는 테이블의 데이터를 Realm으로 옮기는 작업을 볼 수 있습니다.
1. 처음부터 Realm 을 쓰세요.
서론에 언급한것처럼 Realm 은 sqlite 와 호환되지 않는 데이터베이스입니다.
SqliteToRealm 방법을 사용하는 경우,
sqlite 관련 로직 중 SQLiteOpenHelper
를 상속받은 객체 소스를 지울 수 없습니다.
2. 어쩔 수 없다면 Rx + Preference 를 이용해보세요.
앱 실행시 이관 작업을 Rx 로 작업한 후 Preference 로 이관 완료 Flag 를 저장해두고,
이후 실행시 해당 Flag 를 체크하여 이관 작업을 진행하지 않으면 됩니다.
comments powered by Disqus
Subscribe to this blog via RSS.
LazyColumn/Row에서 동일한 Key를 사용하면 크래시가 발생하는 이유
Posted on 30 Nov 2024