Android Realm에 대해 알아보자
1.설치하기
프로젝트 build.gradle 파일에 추가.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "io.realm:realm-gradle-plugin:3.5.0"
}
}
2.애플리케이션 build.gradle파일에 realm-android플러그인
apply plugin: 'realm-android'
3.ProGuard설정이 Realm라이브러리에 포함되어있습니다. 따로 규칙을 추가할 필요없음.
모델(Model)
Realm모델 클래스는 RealmObject 기반 클래스를 상속받아서 생성합니다.
Required field와 Null 값
null이 필드의 값으로 부적당한 경우, @Required 어노테이션을
null값을 허용하지 않기를 강제하기 위해 사용할 수 있습니다.
단지 Boolean, Byte, Short, Integer, Long, Float, Double, String, byte[], Date만
Required로 지정될 수 있습니다. 다른형은 컴파일 실패.
자동 갱신 객체
Realm 객체와 RealmResults는 기반 데이터에 의해 라이브로 자동 갱신되는 뷰입니다.
즉, 결과를 매번 다시 가져올 필요가 없다는 의미입니다. 오브젝트를 수정하면 질의는 즉시 결과로 반영됩니다.
realm.executeTransaction(new Realm.Transaction(){
@Override
public void execute(Realm realm){
Dog myDog = realm.createObject(Dog.class)
myDog.setName("Fido")
myDog.setAge(1)
}
})
Dog myDog = realm.where(Dog.class).equalTo("age", 1).findFirst()
realm.executeTransaction(new Realm.Transaction(){
@Override
public void execute(Realm realm){
Dog myPuppy = realm.where(Dog.class).equalTo("age",1).findFirst()
myPuppy.setAge(2)
}
})
Realm 객체와 RealmResults 이런 특징은 Realm을 더 빠르고 효율적으로 하는 동시에
여러분의 코드를 더 간결하고 반응성 있게 만들어 줍니다.
색인된 속성
@Index 어노테이션은 해당 필드에 검색 색인을 추가합니다.
삽입 처리가 느리며 데이터의 파일을 크게 만들지만 질의 처리를 빠르게 할 수 있습니다.
읽기 성능에 특정해서 최적화를 하는 경우에만 색인을 추가하길 추천.
기본 키(@PrimaryKey)
필드를 기본 키로 다루기 위해서 @PrimaryKey 어노테이션을 사용해야 하며 필드 타입은 문자열(String)이거나
정수(byte, short, int, long)나 대응되는 박스형(Byte, Short, Integer, Long)이어야 합니다.
문자열을 기본키로 사용하면 해당 필드는 인덱싱 됩니다.
쓰기(write)
쓰기 오퍼레이션(추가, 수정, 삭제)은 반드시 쓰기 트랜잭션 내에서 이루어져야 합니다.
쓰기 트랜잭션은 스레드 안전을 보장하기 위해 사용합니다.
Realm realm = Realm.getDefaultInstance()
realm.beginTransaction()
//..객체를 여기에서 추가하거나 갱신합니다.
realm.commitTransaction()
참조 :
'안드로이드' 카테고리의 다른 글
[Android] 데이터 바인딩(DataBinding) (0) | 2022.10.24 |
---|---|
[Android] Wifi 연결 및 가져오기 (0) | 2022.10.24 |
스크래치 뷰 (0) | 2022.10.20 |
[Android] 키보드 이벤트(Show/Hide)에 대해 알아보자 (0) | 2022.10.20 |
[Android] 카톡 스토리 공유(kakao story share) (0) | 2022.10.20 |