Android 에서 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
, lesserThan
와 greaterThan
방법 으로 결 과 를 걸 러 낼 수 있다. 다음은 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
에 대한 지식 을 더 배우 고 싶 으 면 공식 문 서 를 참고 하 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nginx websocket ip_해시 규칙프로젝트 를 다운로드 한 후 서로 다른 네트워크 에 각각 이 demo 프로젝트 를 배치 합 니 다. 프로젝트 에서 환경 변수 에 따라 시스템 변 수 를 설정 합 니 다. spring.profiles.active=de...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.