Android 데이터베이스 Realm 빠 른 입문 강좌

- - - - 홈 페이지 - - -
소개
안 드 로 이 드 가 개발 한 최신 트 렌 드 인 Realm 은 SQLite 와 ORMlibraries 를 대체 할 수 있 는 경량급 데이터베이스 다.
SQLite 에 비해 Realm 은 빠 르 고 많은 현대 데이터 베 이 스 를 가 진 특성 을 가진다. 예 를 들 어 JSON, 스 트림 api, 데이터 변경 알림, 암호 화 지원 등 은 모두 안 드 로 이 드 개발 자 에 게 편 의 를 가 져 다 주 었 다.
이 빠 른 입문 튜 토리 얼 에 서 는 안 드 로 이 드 버 전 리 얼 엠 의 기초 지식 을 배 울 수 있다.본 튜 토리 얼 에서 우리 가 사용 하 는 것 은 Realm v 0.84.1 이다.
2 Realm 원 격 패 키 지 를 추가 하고 Realm 을 프로젝트 에 추가 합 니 다.
안 드 로 이 드 프로젝트 에서 Realm 을 사용 하려 면 module 의 build. gradle 파일 에 의존 도 를 추가 해 야 합 니 다.
compile 'io.realm:realm-android:0.84.1'

3 Realm 만 들 기
하나의 Realm 은 SQLite 데이터베이스 에 해당 합 니 다.안 드 로 이 드 파일 시스템 에 오래 저 장 될 파일 이 있 습 니 다.
3.1 새로운 Realm 을 만 들 려 면
임의의 Activity 에서 정적 방법 인 Realm. getInstance 를 호출 할 수 있 습 니 다.
Realm myRealm = Realm.getInstance(context);

Realm. getInstance 를 호출 하고 Realm Configuration 에 들 어 오지 않 으 면 default. realm 이라는 Realm 파일 을 만 듭 니 다.
3.2 앱 에 다른 Realm 을 추가 하려 면
Realm Configuration. Builder 대상 을 사용 하고 Realm file 에 만 있 는 이름 을 지정 해 야 합 니 다.
Realm myOtherRealm =
    Realm.getInstance(new    RealmConfiguration.Builder(context)
                      .name("myOtherRealm.realm")
                        .build()
);

4 RealmObject 만 들 기
RealmObject 클래스 만 계승 하면 임의의 자바 빈 은 Realm 에 저장 할 수 있다.자바 빈 이 뭔 지 몰라?이것 은 바로 직렬 화 가능 한 자바 류 로 기본 구조 기 가 있 고 구성원 변 수 는 해당 하 는 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;
    }

}

RealmObject 의 구성원 변 수 를 메 인 키 로 하려 면 @ Primary Key 주 해 를 사용 할 수 있 습 니 다.예 를 들 어 Country 클래스 에 메 인 키 코드 를 추가 하 는 방법 을 보 여 줍 니 다.
@PrimaryKey
private String code;

public String getCode() {
    return code;
}

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

5 트 랜 잭 션 생 성
Realm 은 ACID (데이터베이스 트 랜 잭 션 이 올 바 르 게 실행 되 는 네 가지 기본 요소 의 줄 임 말) 규범 에 따라 원자 성과 일치 성 을 확보 하기 위해 모든 기록 작업 을 하나의 트 랜 잭 션 에서 수행 하도록 강제 합 니 다.
새로운 사 무 를 시작 하려 면 beginTransaction 방법 을 사용 하 십시오.유사 하 게 이 일 을 끝 내 려 면 commitTransaction 방법 을 사용 하 십시오.주: 사 무 는 영어 의 transaction 입 니 다.
5.1 Country 류 의 구조 기 를 사용 하지 않 고 country 1 을 만 듭 니 다.
Realm 에 있어 서 RealmObject 의 인 스 턴 스 를 관리 하려 면 이 인 스 턴 스 는 createObject 방법 으로 만들어 야 합 니 다.Country 클래스 를 만 들 고 저장 하 는 방법 을 보 여 줍 니 다.
myRealm.beginTransaction();

// Create an object
Country country = myRealm.createObject(Country.class); 
// Set its fields
country.setName("Norway");
country.setPopulation(5165800);
country.setCode("NO");

myRealm.commitTransaction();

5.1 구조 기 를 사용 하여 country 2 를 만들어 야 합 니 다.
사 무 를 제출 하기 전에 관련 Realm 대상 의 copy ToRealm 방법 을 사용 합 니 다.여 기 는 예시 입 니 다.
// Create the object
Country country = new Country();
country.setName("Russia");
country.setPopulation(146430430);
country.setCode("RU");

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

6. 쓰기 조회
Realm 은 검색 어 를 만 들 기 위해 매우 직관 적 이 고 흐 르 는 API 를 제공 했다.검색 어 를 만 들 려 면 Realm 대상 의 where 방법 을 사용 하여 관심 있 는 대상 의 클래스 를 입력 하 십시오.검색 어 를 만 든 후, RealmResults 대상 을 되 돌려 주 는 findAll 방법 으로 모든 결 과 를 얻 을 수 있 습 니 다. findAll.
6.1 findAll()
다음 예 에서 Country 의 모든 대상 을 가 져 오고 인쇄 합 니 다.
RealmResults<Country> results =
        myRealm.where(Country.class).findAll();

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

6.2 begins With, ends With, lesser Than, greater Than
Realm 은 begins With, ends With, lesser Than 과 greater Than 등 몇 가지 이름 이 매우 적합 한 방법 을 제공 하여 결 과 를 걸 러 내 고 선별 할 수 있 습 니 다.다음 코드 는 greater Than 방법 으로 population (인구) 이 1 억 이상 인 Country objects 를 얻 는 방법 을 보 여 줍 니 다.
RealmResults<Country> results =
        myRealm.where(Country.class)
                .greaterThan("population", 100000000)
                .findAll();

6.3 findAllSorted
검색 결과 가 분류 되 고 싶다 면 findAllSorted 방법 을 사용 할 수 있 습 니 다.인자 에 서 는 분류 되 는 field 의 이름 을 String 으로 지정 하고 boolean 으로 분류 순 서 를 지정 합 니 다.
RealmResults<Country> results =
        myRealm.where(Country.class)
                .findAllSorted("name", false);

총결산
이 빠 른 입문 에서 안 드 로 이 드 프로젝트 에서 리 얼 엠 을 어떻게 사용 하 는 지 배 웠 다.Realm 데이터 베 이 스 를 만 들 고 조회 데 이 터 를 저장 하 는 것 이 얼마나 쉬 운 지 볼 수 있다.

좋은 웹페이지 즐겨찾기