Android 에서 Realm 가입 및 사용

안 드 로 이 드 에 대한 Realm 와 함께 실행
소개 하 다.
안 드 로 이 드 개발 의 최신 동향 에 관심 이 있다 면 Realm, Realm 은 경량급 데이터 베이스 로 안 드 로 이 드 개발 에서 SQLite 와 ORM 프레임 워 크 를 대체 할 수 있다 는 것 을 들 어 본 적 이 있 을 것 이다.
SQLite 에 비해 Realm 은 속도 가 빠 르 고 선진 적 인 특성 이 많 습 니 다. 예 를 들 어 JSON 에 대한 지원, 유창 한 API, 데이터 변화 알림 (관찰자), 암호 화 지원 등 모든 것 이 안 드 로 이 드 개발 자 들 을 더욱 멋 지게 살 게 할 것 입 니 다.
이 글 의 주 제 는 바로 Realm for Android 인 데, 이 글 에서 나 는 Realm v 0.84.1 을 사용 할 것 이다.
프로젝트 에 Realm 추가
Android 프로젝트 에서 Realm 을 사용 하려 면 module 의 build. gradle 파일 에 다음 코드 를 추가 해 야 합 니 다.
compile 'io.realm:realm-android:0.84.1'

Realm 만 들 기
하나의 Realm 과 SQLite 는 비교적 유사 하 다.이 파일 은 그 와 연 결 된 파일 이 있 습 니 다. 이 파일 은 한 번 만 들 면 안 드 로 이 드 시스템 에 영구적 으로 존재 합 니 다.
Realm 을 만 들 려 면 임의의 Activity 에서 정적 방법 Realm.getInstance 을 호출 할 수 있 습 니 다.
Realm myRealm = Realm.getInstance(context);

주의해 야 할 것 은 우리 가 이렇게 만 들 었 습 니 다. 지정 되 지 않 았 습 니 다 RealmConfiguration. 이때 만 든 파일 은 기본 파일 이름 default. realm 을 사용 합 니 다.다른 Realm 을 만 들 려 면 전달 RealmConfiguration.Builder 을 해 야 하고 유일한 이름 을 지정 해 야 합 니 다.
Realm myOtherRealm =
        Realm.getInstance(
                new RealmConfiguration.Builder(context)
                        .name("myOtherRealm.realm")
                        .build()
);

RealmObject 만 들 기
javabean 이 계승 되 었 다 면 RealmObject Realm 을 저장 할 수 있 습 니 다. javabean 이 무엇 인지 알 고 싶다 면 여기 의 정 의 를 보 세 요. javabean 은 직렬 화 될 수 있 고 기본 적 인 구조 방법 이 있 습 니 다. 구성원 변 수 는 getter 와 setter 방법 을 제공 합 니 다.예 를 들 어 아래 코드 는 Realm 에 쉽게 저장 할 수 있 습 니 다.
public class Country extends RealmObject {

    private String name;
    private int population;

    public Country() { }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPopulation() {
        return population;
    }

    public void setPopulation(int population) {
        this.population = population;
    }

}
@PrimaryKey 주 해 를 사용 하여 이 구성원 변 수 는 Realm 의 메 인 키 임 을 표시 할 수 있 습 니 다.예 를 들 어 아래 코드 는 code 필드 를 메 인 키 로 하고,
@PrimaryKey
private String code;

public String getCode() {
    return code;
}

public void setCode(String code) {
    this.code = code;
}

트 랜 잭 션 생 성
아래 코드 에서 Realm 을 사용 하여 데 이 터 를 조회 하 는 것 이 매우 간단 하고 데 이 터 를 기록 하 는 것 이 조금 번 거 로 운 것 을 발견 할 수 있 습 니 다.Realm 은 작 동 하 는 원자 성과 일치 성 을 보장 하기 위해 ACID 를 따른다.Realm 에서 모든 쓰기 동작 은 하나의 업무 에 있 습 니 다.beginTransaction 방법 을 사용 하면 하나의 사 무 를 열 수 있 고 commitTransaction 방법 으로 사 무 를 제출 할 수 있 습 니 다.다음 코드 는 하 나 를 만 들 고 저장 하 는 방법 을 보 여 줍 니 다 Country.
myRealm.beginTransaction();

// Create an object
Country country1 = myRealm.createObject(Country.class); 

// Set its fields
country1.setName("Norway");
country1.setPopulation(5165800);
country1.setCode("NO");

myRealm.commitTransaction();
country1 대상 은 Country 의 구조 방법 으로 만 든 것 이 아니 라 RealmObject 이 인 스 턴 스 를 저장 하려 면 createObject 방법 으로 만들어 야 한 다 는 것 을 이미 알 고 있 을 것 이다.
만약 당신 이 구조 방법 을 사용 해 야 한다 면, 업 무 를 제출 하기 전에 호출 copyToRealm 방법 으로 대상 을 Realm 에 연결 하 는 것 을 잊 지 마 세 요. 예 를 들 어:
// Create the object
Country country2 = new Country();
country2.setName("Russia");
country2.setPopulation(146430430);
country2.setCode("RU");

myRealm.beginTransaction();
    Country copyOfCountry2 = myRealm.copyToRealm(country2);
myRealm.commitTransaction();

조회 하 다.
Realm 은 매우 직관 적 이 고 간단 한 API 를 제공 하여 조작 을 조회 하고 호출 Realm 하 는 where 방법 을 제공 합 니 다. 그리고 당신 이 필요 로 하 는 클래스 를 전달 하면 검색 의 생 성 을 완성 할 수 있 습 니 다. 그 다음 에 findAll 방법 으로 모든 데 이 터 를 옮 겨 다 니 며 되 돌아 오 는 데 이 터 를 RealmResults 대상 에 저장 할 수 있 습 니 다. 다음 의 예 는...우 리 는 모든 것 을 조회 하고 인쇄 했다 Country
RealmResults<Country> results1 =
        myRealm.where(Country.class).findAll();

for(Country c:results1) {
    Log.d("results1", c.getName());
}

// Prints Norway, RussiaRealmResults<Country> results1 =
        myRealm.where(Country.class).findAll();

for(Country c:results1) {
    Log.d("results1", c.getName());
}

// Prints Norway, Russia

그 밖 에 beginsWith, endsWith, lesserThangreaterThan 방법 으로 결 과 를 걸 러 낼 수 있다. 다음은 greaterThan 방법 으로 모든 population 이 1 억 이상 Country 을 조회 하 는 방법 을 보 여 준다.
RealmResults<Country> results2 =
        myRealm.where(Country.class)
                .greaterThan("population", 100000000)
                .findAll();

// Gets only Russia

검색 결 과 를 어떤 순서 로 하려 면 findAllSorted 방법 을 사용 할 수 있 습 니 다. String 형식의 매개 변수 와 boolean 형식의 매개 변 수 를 가지 고 있 습 니 다. 그 중에서 String 은 정렬 할 필드 를 지정 하고 boolean 은 정렬 방식 을 지정 합 니 다.
// Sort by name,     
RealmResults<Country> results3 =
        myRealm.where(Country.class)
                .findAllSorted("name", false);

// Gets Russia, Norway
Realm 에 대한 지식 을 더 배우 고 싶 으 면 공식 문 서 를 참고 하 세 요.

좋은 웹페이지 즐겨찾기