- 안드로이드 표준 라이브러리에서 제공하는 SQLite 이외에 사용해 볼 만한 데이터베이스
- 로컬 데이터베이스
- 속도 면에서 SQLite보다 훨씬 더 빠름
-사용법-
1. 프로젝트 수준 그레이들 파일
dependencies{
classpath 'com.android.tools.build:gradle:3.2.1'
classpath "io.realm:realm-gradle-plugin:3.5.0"
}
dependencies{
classpath 'com.android.tools.build:gradle:3.2.1'
classpath "io.realm:realm-gradle-plugin:3.5.0"
}
적으면 realm 플러그인 설치됨
2. 모듈의 gradle 파일
apply plugin: 'realm-android'
apply plugin: 'realm-android'
3.
Realm이 기본 ORM을 목적으로 하므로 Realm이 관리할 VO(Value-Object) 클래스를 하나 만들어 준다.
*VO(Value-Object) = 데이터만을 표현하기 위한 클래스 (get,set 만 있는거)
public class MemoVO extends RealmObject{
public String title;
public String content;
}
RealmObject를 상속 받은 VO 객체의 변수 데이터를 Realm이 자동 해석해 데이터를 저장하거나 저장된 데이터로 객체를 만들어 준다.
4. 이제 Realm을 이용해야 하는데 데이터 저장, 획득을 위한 Realm 객체를 획득
Realm.init(this);
Realm mRealm = Realm.getDefaultInstance();
5. 이렇게 획득한 Realm객체를 VO객체의 데이터를 저장하는 방법
mRealm.executeTransaction(new Realm.Transaction(){
@Override
public void execute(Realm realm){
MemoVO vo = realm.createObject(MemoVO,class);
vo.title = title;
vo.content = content;
}
});
execute() 함수 내부에서 데이터 저장을 위해 Realm과 연결된 VO 객체를 createObject(MemoVO.class); 코드로 하나 생성해 주고 이렇게 생성된 VO 객체의 변수에 데이터만 주면 자동으로 저장되는 구조이다.
6. 데이터를 획득하는 방법
MemoVO vo = mRealm.where(MemoVO.class).equalTo("title","hello").findFirst();
코드 한줄 데이터를 읽어옴.
설명 - > MemoVO.class 타입이면서 title 값이 hello인 데이터 중 첫번째 데이터를 가져오는 코드
7. title 역순으로 정렬하여 모든 데이터를 획득하는 코드, 만약 데이터 획득 시 조건을 명시하려면 equalTo()함수 이용해라
mRealm.where(MemoVO.class).findAllSorted("title",Sort.DESCENDING);
8. 조건 명시
equalTo() | between() | beginsWith() | endsWith() | isNotNull() | in() | isNull() |
lessThan() |
lessThanOrEqualTo() | contains() | like() | 등 | 등 | 등 |
9. 데이터 여러 건이면 RealmResults 타입으로 획득 한다
RealmResults<MemoVO> results = mRealm.where(MemoVO.class).equalTo("title","Tiger").findAll();
10. 획득한 VO 객체의 데이터를 삭제하려면 deleteFromRealm() 함수 사용
MemoVO vo = mRealm.where(MemoVO.class).equalTo("title","hello").findFirst();
vo.deleteFromRealm();
11. 특정 타입(MemoVO)의 모든 데이터를 삭제하려면 delete() 함수를 이용해라
mRealm.delete(MemoVO.class);
'■ Android > Tip' 카테고리의 다른 글
[Android] Ringtone - 소리 울리기 (시스템 효과음) (0) | 2019.12.20 |
---|---|
[Android] Vibrator - 진동 울리기 (0) | 2019.12.19 |
[Android] SQLite - 내용 3 (사용법) (0) | 2019.12.17 |
[Android] SQLite - 내용 2 (0) | 2019.12.16 |
[Android] SQLite - 내용 1 (0) | 2019.12.15 |