패키지 io.realm

클래스 Realm

  • 구현된 모든 인터페이스:
    Closeable, AutoCloseable

    public class Realm
    extends Object
    Realm 클래스는 객체 영구 저장소의 저장 및 트랜잭션 관리자입니다. RealmObject의 인스턴스 생성을 담당합니다. Realm 내의 객체는 언제든지 쿼리하고 읽을 수 있습니다. 객체 생성, 수정 및 삭제는 트랜잭션 내부에서 수행되어야 합니다. 다음을 참조하세요. executeTransaction(Transaction)

    트랜잭션은 여러 스레드의 여러 인스턴스가 전체 ACID를 보장하는 일관된 상태로 동일한 객체에 액세스할 수 있도록 보장합니다.

    Realm 인스턴스를 완료한 후에는 Closeable.close() 메서드를 호출하는 것이 중요합니다. 이렇게 하지 않으면 네이티브 리소스를 해제할 수 없어 OutOfMemoryError 오류가 발생할 수 있습니다.

    Realm 인스턴스는 서로 다른 스레드에서 사용할 수 없습니다. 즉, Realm을 사용하려는 각 스레드에서 인스턴스를 열어야 합니다. Realm 인스턴스는 참고 카운팅을 사용하여 스레드별로 자동으로 캐시되므로 참고 횟수가 0에 도달하지 않는 한 getInstance(RealmConfiguration) 호출은 캐시된 Realm을 반환하므로 경량 작업으로 간주해야 합니다.

    UI 스레드의 경우 이는 Realm을 열고 닫을 때 onCreate/onDestory 또는 onStart/onStop에서 발생해야 함을 의미합니다.

    Realm 인스턴스는 Handler 메커니즘을 사용하여 스레드 전반에서 상태를 조정합니다. 이는 또한 Looper 이(가) 없는 스레드의 Realm 인스턴스가 refresh() 을(를) 수동으로 호출하지 않는 한 업데이트를 받을 수 없음을 의미합니다.

    Android 활동에서 Realm을 사용하기 위한 표준 패턴은 아래에서 확인할 수 있습니다.

     public class RealmApplication extends Application {
    
         \@Override
         public void onCreate() {
             super.onCreate();
    
             // The Realm file will be located in package's "files" directory.
             RealmConfiguration realmConfig = new RealmConfiguration.Builder(this).build();
             Realm.setDefaultConfiguration(realmConfig);
         }
     }
    
     public class RealmActivity extends Activity {
    
       private Realm realm;
    
       \@Override
       protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.layout_main);
         realm = Realm.getDefaultInstance();
       }
    
       \@Override
       protected void onDestroy() {
         super.onDestroy();
         realm.close();
       }
     }
     

    Realm은 문자열 및 최대 16MB를 포함하는 바이트 필드를 지원합니다.

    다음도 참조하세요.
    ACID, Realm 사용 예제
    • 필드 세부 정보

      • ENCRYPTION_KEY_LENGTH

        public static final int ENCRYPTION_KEY_LENGTH
        Realm 데이터를 암호화하는 데 사용되는 암호화 키의 필수 길이입니다.
        다음도 참조하세요.
        상수 필드 값
      • WRITE_EXECUTOR

        public static final io.realm.internal.async.RealmThreadPoolExecutor WRITE_EXECUTOR
        쓰기 작업에 사용되는 스레드 풀 실행기 - 쓰기는 병렬화할 수 없으므로 스레드가 하나만 필요합니다.
      • SharedRealm

        public io.realm.internal.OsSharedRealm sharedRealm
      • objectContext

        public static final io.realm.BaseRealm.ThreadLocalRealmObjectContext objectContext
    • 메서드 세부 정보

      • asFlowable

        public Flowable<Realm> asFlowable()
        이 Realm의 변경 사항을 모니터링하는 RxJava Flowable을 반환합니다. 구독 시 현재 상태를 방출합니다. Realm이 업데이트될 때마다 항목이 계속 방출되며 onComplete 은(는) 호출되지 않습니다.

        Realm Flowable에서 방출된 항목은 동결됩니다( freeze() 참조). 즉, 변경할 수 없으며 모든 스레드에서 읽을 수 있습니다.

        Realm Flowable은 항상 라이브 Realm을 보유한 스레드에서 항목을 방출합니다. 즉, 추가 처리를 수행해야 하는 경우 계산 스케줄러에서 값을 관찰하는 것이 좋습니다.

        realm.asFlowable() .observeOn(Schedulers.computation()) .map(rxRealm -> doExpensiveWork(rxRealm)) .observeOn(AndroidSchedulers.mainThread()) .subscribe( ... );

        asFlowable() 에서 항목 방출을 중지하려면 first() 연산자를 사용하여 첫 번째 항목만 방출하도록 RxJava에 지시할 수 있습니다.

         
         realm.asFlowable().first().subscribe( ... ); // You only get the results once
         
         
        반환합니다:
        onNext 만 호출하는 RxJava Observable입니다. 절대 onComplete 또는 OnError 를 호출하지 않습니다.
        다음도 참조하세요.
        RxJava 및 Realm
      • isEmpty

        공개 부울 isEmpty()
        Realm 에 객체가 포함되어 있는지 확인합니다.
        반환합니다:
        true 비어 있으면 @{code false}, 그렇지 않으면 @{code false} .
      • getSchema

        public RealmSchema getSchema()
        이 Realm의 스키마를 반환합니다. 스키마는 변경할 수 없습니다. 수정하려고 하면 UnsupportedOperationException 이(가) 발생합니다.

        스키마는 DynamicRealm.getSchema() 를 사용하거나 마이그레이션을 통해서만 수정할 수 있습니다.

        반환합니다:
        이 Realm의 RealmSchema 입니다.
      • init

        public static void init​(Context context)
        Realm 라이브러리를 초기화하고 사용할 준비가 된 기본 구성을 생성합니다. 다른 Realm API와 상호 작용하기 전에 이 메서드를 호출해야 합니다.

        좋은 위치는 Application 하위 클래스입니다.

         
         public class MyApplication extends Application {
           \@Override
           public void onCreate() {
             super.onCreate();
             Realm.init(this);
           }
         }
         
         

        AndroidManifest.xml 파일에 등록하는 것을 잊지 마세요:

         
         <?xml version="1.0" encoding="utf-8"?>
         <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.realm.example">
         <application android:name=".MyApplication">
           // ...
         </application>
         </manifest>
         
         
        매개변수:
        context - 애플리케이션 컨텍스트.
        예외 처리:
        IllegalArgumentException - null 컨텍스트가 제공되는 경우.
        IllegalStateException - Context.getFilesDir() 을(를) 찾을 수 없는 경우.
        다음도 참조하세요.
        getDefaultInstance()
      • init

        public static void init​(Context context,
                                String userAgent)
        Realm 라이브러리를 초기화하고 사용할 준비가 된 기본 구성을 생성합니다. 다른 Realm API와 상호 작용하기 전에 이 메서드를 호출해야 합니다.

        좋은 위치는 Application 하위 클래스입니다.

         
         public class MyApplication extends Application {
           \@Override
           public void onCreate() {
             super.onCreate();
             Realm.init(this, "MyApp/" + BuildConfig.VERSION_NAME);
           }
         }
         
         

        AndroidManifest.xml 파일에 등록하는 것을 잊지 마세요:

         
         <?xml version="1.0" encoding="utf-8"?>
         <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.realm.example">
         <application android:name=".MyApplication">
           // ...
         </application>
         </manifest>
         
         
        매개변수:
        context - 애플리케이션 컨텍스트.
        userAgent - 세션이 설정될 때 User-Agent 헤더의 일부로 Realm 객체 서버에 전송될 선택적 사용자 정의 문자열입니다. 이 설정은 동기화되지 않은 Realm에서는 사용되지 않습니다.
        예외 처리:
        IllegalArgumentException - null 컨텍스트 또는 userAgent가 제공된 경우.
        IllegalStateException - Context.getFilesDir() 을(를) 찾을 수 없는 경우.
        다음도 참조하세요.
        getDefaultInstance()
      • getInstanceAsync

        public static RealmAsyncTask getInstanceAsync​(RealmConfiguration configuration,
                                                      Realm.Callback callback)
        프로세스에서 RealmConfiguration 당 첫 번째 Realm 인스턴스를 만들려면 모든 초기화 코드(Realm 설정, 스키마 유효성 검사 및 초기 데이터 생성)를 해당 점에서 실행해야 하므로 시간이 걸릴 수 있습니다. 이 메서드는 초기화 작업을 백그라운드 스레드에 배치하고 초기화가 완료된 후 Realm 인스턴스를 호출자 스레드에 비동기적으로 전달합니다.
        매개변수:
        configuration - RealmConfiguration Realm을 여는 데 사용됩니다.
        callback - 결과를 반환하기 위해 호출됩니다.
        반환합니다:
        취소 가능한 작업을 나타내는 RealmAsyncTask 입니다.
        예외 처리:
        IllegalArgumentException - null RealmConfiguration 또는 null Realm.Callback 가 제공된 경우.
        IllegalStateException - 이벤트 루프가 아닌 또는 IntentService 스레드에서 호출된 경우.
        다음도 참조하세요.
        for more details.
      • getDefaultConfiguration

        @Nullable
        public static RealmConfiguration getDefaultConfiguration()
        getDefaultInstance() 의 기본 구성을 반환합니다.
        반환합니다:
        기본 구성 객체이거나 기본 구성이 지정되지 않은 경우 null 입니다.
      • removeDefaultConfiguration

        public static void removeDefaultConfiguration()
        현재 기본 구성을 제거합니다(있는 경우). 을 사용하여 setDefaultConfiguration(RealmConfiguration) 새로운 기본 구성을 설정할 때까지 getDefaultInstance() 에 대한 모든 추가 호출은 실패합니다.
      • createAllFromJson

        public <E extends RealmModel> void createAllFromJson​(Class<E> clazz,
                                                             JSONArray json)
        JSON 배열의 각 객체에 대한 Realm 객체를 만듭니다. 이 작업은 트랜잭션 내에서 수행되어야 합니다.

        속성을 알 수 없는 JSON 속성은 무시됩니다. JSON 객체에 RealmObject 필드가 없으면 RealmObject 필드가 해당 유형의 기본값으로 설정됩니다.

        이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

        매개변수:
        clazz - 생성할 Realm 객체의 유형입니다.
        json - 각 JSONObject가 지정된 클래스에 매핑해야 하는 배열입니다.
        예외 처리:
        RealmException - JSON에서의 매핑이 실패한 경우.
        IllegalArgumentException - JSON 객체에 기본 키 속성이 없지만 해당 RealmObjectSchemaPrimaryKey 가 정의되어 있는 경우.
        UnsupportedOperationException - 삽입할 객체에 RealmDictionary 또는 RealmSet 가 포함된 경우
        다음도 참조하세요.
        RealmSet, RealmDictionary, RealmMap
      • createOrUpdateAllFromJson

        public <E extends RealmModel> void createOrUpdateAllFromJson​(Class<E> clazz,
                                                                     JSONArray json)
        프라이머리 키로 식별되는 기존 객체 목록을 새 JSON 데이터로 업데이트하려고 시도합니다. Realm에서 기존 객체를 찾을 수 없는 경우 새 객체가 생성됩니다. 이는 트랜잭션 내에서 발생해야 합니다. RealmObject 을(를) 업데이트했는데 JSON 객체에 필드가 없는 경우 해당 필드는 업데이트되지 않습니다. 새 RealmObject 가 생성되었지만 JSON 객체에 필드가 없는 경우 해당 필드에 필드 유형의 기본값이 할당됩니다.

        이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

        매개변수:
        clazz - 만들거나 업데이트할 RealmObject 유형입니다. 여기에는 기본 키가 정의되어 있어야 합니다.
        json - 객체 데이터가 있는 배열입니다.
        예외 처리:
        IllegalArgumentException - PrimaryKey 없이 클래스를 업데이트하려는 경우.
        IllegalArgumentException - JSON 객체에 기본 키 속성이 없지만 해당 RealmObjectSchemaPrimaryKey 가 정의되어 있는 경우.
        RealmException - JSON을 매핑할 수 없는 경우.
        UnsupportedOperationException - 삽입할 객체에 RealmDictionary 또는 RealmSet 가 포함된 경우
        다음도 참조하세요.
        createAllFromJson(Class, org.json.JSONArray), RealmSet, RealmDictionary, RealmMap
      • createAllFromJson

        public <E extends RealmModel> void createAllFromJson​(Class<E> clazz,
                                                             String json)
        JSON 배열의 각 객체에 대한 Realm 객체를 만듭니다. 이 작업은 트랜잭션 내에서 수행되어야 합니다. 속성을 알 수 없는 JSON 속성은 무시됩니다. JSON 객체에 RealmObject 필드가 없으면 RealmObject 필드가 해당 유형의 기본값으로 설정됩니다.

        이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

        매개변수:
        clazz - 생성할 Realm 객체의 유형입니다.
        json - 각 객체가 지정된 클래스에 매핑될 수 있는 문자열인 JSON 배열입니다.
        예외 처리:
        RealmException - JSON에서의 매핑이 실패한 경우.
        IllegalArgumentException - JSON 객체에 기본 키 속성이 없지만 해당 RealmObjectSchemaPrimaryKey 가 정의되어 있는 경우.
        UnsupportedOperationException - 삽입할 객체에 RealmDictionary 또는 RealmSet 가 포함된 경우
        다음도 참조하세요.
        RealmSet, RealmDictionary, RealmMap
      • createOrUpdateAllFromJson

        public <E extends RealmModel> void createOrUpdateAllFromJson​(Class<E> clazz,
                                                                     String json)
        프라이머리 키로 식별되는 기존 객체 목록을 새 JSON 데이터로 업데이트하려고 시도합니다. Realm에서 기존 객체를 찾을 수 없는 경우 새 객체가 생성됩니다. 이는 트랜잭션 내에서 발생해야 합니다. RealmObject 을(를) 업데이트했는데 JSON 객체에 필드가 없는 경우 해당 필드는 업데이트되지 않습니다. 새 RealmObject 가 생성되었지만 JSON 객체에 필드가 없는 경우 해당 필드에 필드 유형의 기본값이 할당됩니다.

        이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

        매개변수:
        clazz - 만들거나 업데이트할 RealmObject 유형입니다. 여기에는 기본 키가 정의되어 있어야 합니다.
        json - JSON 객체 배열이 있는 문자열입니다.
        예외 처리:
        IllegalArgumentException - PrimaryKey 없이 클래스를 업데이트하려는 경우.
        RealmException - JSON 문자열에서 JSON 배열을 만들 수 없는 경우.
        IllegalArgumentException - JSON 객체에 기본 키 속성이 없지만 해당 RealmObjectSchemaPrimaryKey 가 정의되어 있는 경우.
        UnsupportedOperationException - 삽입할 객체에 RealmDictionary 또는 RealmSet 가 포함된 경우
        다음도 참조하세요.
        createAllFromJson(Class, String), RealmSet, RealmDictionary, RealmMap
      • createAllFromJson

        public <E extends RealmModel> void createAllFromJson​(Class<E> clazz,
                                                             InputStream inputStream)
                                                      throws IOException
        JSON 배열의 각 객체에 대한 Realm 객체를 만듭니다. 이 작업은 트랜잭션 내에서 수행되어야 합니다. 속성을 알 수 없는 JSON 속성은 무시됩니다. JSON 객체에 RealmObject 필드가 없으면 RealmObject 필드가 해당 유형의 기본값으로 설정됩니다.

        이 API는 API 레벨 11 이상에서만 사용할 수 있습니다.

        이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

        매개변수:
        clazz - 생성된 Realm 객체의 유형입니다.
        inputStream - JSON 배열을 입력 스트림으로 사용합니다. 배열의 모든 객체는 지정된 클래스에 속해야 합니다.
        예외 처리:
        RealmException - JSON에서의 매핑이 실패한 경우.
        IllegalArgumentException - JSON 객체에 기본 키 속성이 없지만 해당 RealmObjectSchemaPrimaryKey 가 정의되어 있는 경우.
        IOException - 입력 스트림에 문제가 있는 경우.
        UnsupportedOperationException - 삽입할 객체에 RealmDictionary 또는 RealmSet 가 포함된 경우
        다음도 참조하세요.
        RealmSet, RealmDictionary, RealmMap
      • createOrUpdateAllFromJson

        public <E extends RealmModel> void createOrUpdateAllFromJson​(Class<E> clazz,
                                                                     InputStream in)
        프라이머리 키로 식별되는 기존 객체 목록을 새 JSON 데이터로 업데이트하려고 시도합니다. Realm에서 기존 객체를 찾을 수 없는 경우 새 객체가 생성됩니다. 이는 트랜잭션 내에서 발생해야 합니다. RealmObject 을(를) 업데이트했는데 JSON 객체에 필드가 없는 경우 해당 필드는 업데이트되지 않습니다. 새 RealmObject 가 생성되었지만 JSON 객체에 필드가 없는 경우 해당 필드에 필드 유형의 기본값이 할당됩니다.

        이 API는 API 레벨 11 이상에서만 사용할 수 있습니다.

        이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

        매개변수:
        clazz - 만들거나 업데이트할 RealmObject 유형입니다. 여기에는 기본 키가 정의되어 있어야 합니다.
        in - JSON 형식의 객체 데이터 목록이 있는 입력 스트림.
        예외 처리:
        IllegalArgumentException - PrimaryKey 없이 클래스를 업데이트하려는 경우.
        IllegalArgumentException - JSON 객체에 기본 키 속성이 없지만 해당 RealmObjectSchemaPrimaryKey 가 정의되어 있는 경우.
        RealmException - JSON을 읽을 수 없는 경우.
        UnsupportedOperationException - 삽입할 객체에 RealmDictionary 또는 RealmSet 가 포함된 경우
        다음도 참조하세요.
        createOrUpdateAllFromJson(Class, java.io.InputStream), RealmSet, RealmDictionary, RealmMap
      • createObjectFromJson

        @Nullable
        public <E extends RealmModel> E createObjectFromJson​(Class<E> clazz,
                                                             String json)
        JSON 객체의 데이터로 미리 채워진 Realm 객체를 만듭니다. 이 작업은 트랜잭션 내에서 수행되어야 합니다. 속성을 알 수 없는 JSON 속성은 무시됩니다. JSON 객체에 RealmObject 필드가 없으면 RealmObject 필드가 해당 유형의 기본값으로 설정됩니다.

        이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

        매개변수:
        clazz - 생성할 Realm 객체의 유형입니다.
        json - 객체 데이터가 있는 JSON 문자열입니다.
        반환합니다:
        생성된 객체이거나 JSON 문자열이 비어 있거나 null인 경우 null 입니다.
        예외 처리:
        RealmException - json에 매핑에 실패한 경우.
        IllegalArgumentException - JSON 객체에 기본 키 속성이 없지만 해당 RealmObjectSchemaPrimaryKey 가 정의되어 있는 경우.
        UnsupportedOperationException - 삽입할 객체에 RealmDictionary 또는 RealmSet 가 포함된 경우
        다음도 참조하세요.
        RealmSet, RealmDictionary, RealmMap
      • createOrUpdateObjectFromJson

        public <E extends RealmModel> E createOrUpdateObjectFromJson​(Class<E> clazz,
                                                                     String json)
        기본 키로 정의된 기존 객체를 새 JSON 데이터로 업데이트하려고 시도합니다. 기존 객체를 찾을 수 없으면 새 객체가 Realm에 저장됩니다. 이는 트랜잭션 내에서 발생해야 합니다. RealmObject 을(를) 업데이트했는데 JSON 객체에 필드가 없는 경우 해당 필드는 업데이트되지 않습니다. 새 RealmObject 가 생성되었지만 JSON 객체에 필드가 없는 경우 해당 필드에 필드 유형의 기본값이 할당됩니다.

        이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

        매개변수:
        clazz - 만들거나 업데이트할 RealmObject 유형입니다. 여기에는 기본 키가 정의되어 있어야 합니다.
        json - JSON 형식의 객체 데이터가 포함된 문자열입니다.
        반환합니다:
        생성 또는 업데이트된 RealmObject.
        예외 처리:
        IllegalArgumentException - PrimaryKey 없이 클래스를 업데이트하려는 경우.
        IllegalArgumentException - JSON 객체에 기본 키 속성이 없지만 해당 RealmObjectSchemaPrimaryKey 가 정의되어 있는 경우.
        RealmException - 문자열 매개변수에서 JSON 객체를 매핑할 수 없는 경우.
        UnsupportedOperationException - 삽입할 객체에 RealmDictionary 또는 RealmSet 가 포함된 경우
        다음도 참조하세요.
        createObjectFromJson(Class, String), RealmSet, RealmDictionary, RealmMap
      • createObjectFromJson

        @Nullable
        public <E extends RealmModel> E createObjectFromJson​(Class<E> clazz,
                                                             InputStream inputStream)
                                                      throws IOException
        JSON 객체의 데이터로 미리 채워진 Realm 객체를 만듭니다. 이 작업은 트랜잭션 내에서 수행되어야 합니다. 속성을 알 수 없는 JSON 속성은 무시됩니다. JSON 객체에 RealmObject 필드가 없으면 RealmObject 필드가 해당 유형의 기본값으로 설정됩니다.

        이 API는 API 레벨 11 이상에서만 사용할 수 있습니다.

        이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

        매개변수:
        clazz - 생성할 Realm 객체의 유형입니다.
        inputStream - JSON 객체 데이터를 입력 스트림으로 변환합니다.
        반환합니다:
        생성된 객체이거나 JSON 문자열이 비어 있거나 null인 경우 null 입니다.
        예외 처리:
        RealmException - JSON에서의 매핑이 실패한 경우.
        IllegalArgumentException - JSON 객체에 기본 키 속성이 없지만 해당 RealmObjectSchemaPrimaryKey 가 정의되어 있는 경우.
        IOException - 입력 스트림에 문제가 발생한 경우.
        UnsupportedOperationException - 삽입할 객체에 RealmDictionary 또는 RealmSet 가 포함된 경우
        다음도 참조하세요.
        RealmSet, RealmDictionary, RealmMap
      • createOrUpdateObjectFromJson

        public <E extends RealmModel> E createOrUpdateObjectFromJson​(Class<E> clazz,
                                                                     InputStream in)
        기본 키로 정의된 기존 객체를 새 JSON 데이터로 업데이트하려고 시도합니다. 기존 객체를 찾을 수 없으면 새 객체가 Realm에 저장됩니다. 이는 트랜잭션 내에서 발생해야 합니다. RealmObject 을(를) 업데이트했는데 JSON 객체에 필드가 없는 경우 해당 필드는 업데이트되지 않습니다. 새 RealmObject 가 생성되었지만 JSON 객체에 필드가 없는 경우 해당 필드에 필드 유형의 기본값이 할당됩니다.

        이 API는 API 레벨 11 이상에서만 사용할 수 있습니다.

        이 메서드는 현재 값 목록 필드를 지원하지 않습니다.

        매개변수:
        clazz - 만들거나 업데이트할 RealmObject 유형입니다. 여기에는 기본 키가 정의되어 있어야 합니다.
        in - JSON 형식의 객체 데이터가 있는 InputStream 입니다.
        반환합니다:
        생성 또는 업데이트된 RealmObject.
        예외 처리:
        IllegalArgumentException - PrimaryKey 없이 클래스를 업데이트하려는 경우.
        IllegalArgumentException - JSON 객체에 기본 키 속성이 없지만 해당 RealmObjectSchemaPrimaryKey 가 정의되어 있는 경우.
        RealmException - JSON을 읽지 못한 경우.
        UnsupportedOperationException - 삽입할 객체에 RealmDictionary 또는 RealmSet 가 포함된 경우
        다음도 참조하세요.
        createObjectFromJson(Class, java.io.InputStream), RealmSet, RealmDictionary, RealmMap
      • createObject

        public <E extends RealmModel> E createObject​(Class<E> clazz)
        Realm에 새 객체를 인스턴스화하고 추가합니다.

        이 메서드는 @PrimaryKey 어노테이션이 없는 모델 클래스에만 사용할 수 있습니다. 기본 키가 있는 객체를 생성하려면 createObject(Class, Object) 또는 copyToRealm(RealmModel, ImportFlag...) 를 대신 사용합니다.

        매개변수:
        clazz - 생성할 객체의 클래스입니다.
        반환합니다:
        새 객체.
        예외 처리:
        RealmException - 기본 키가 모델 클래스에 정의되어 있거나 객체를 생성할 수 없는 경우.
        다음도 참조하세요.
        createObject(Class, Object)
      • createObject

        public <E extends RealmModel> E createObject​(Class<E> clazz,
                                                     @Nullable
                                                     Object primaryKeyValue)
        이미 설정된 기본 키 값으로 Realm에 새 객체를 인스턴스화하고 추가합니다.

        값이 기본 키 제약 조건을 위반하면 객체가 추가되지 않고 RealmException 가 발생합니다. 모델 클래스에서 제공하는 기본 키의 기본값은 무시됩니다.

        매개변수:
        clazz - 생성할 객체의 클래스입니다.
        primaryKeyValue - 기본 키 필드의 값입니다.
        반환합니다:
        새 객체.
        예외 처리:
        RealmException - 기본 키가 유효하지 않아 객체를 생성할 수 없는 경우입니다.
        IllegalStateException - 모델 클래스에 기본 키가 정의되어 있지 않은 경우.
        IllegalArgumentException - primaryKeyValue 에 예상 값으로 변환할 수 있는 값이 없는 경우.
      • createEmbeddedObject

        public <E extends RealmModel> E createEmbeddedObject​(Class<E> clazz,
                                                             RealmModel parentObject,
                                                             String parentProperty)
        새로운 내장된 객체를 인스턴스화하고 Realm에 추가합니다.

        이 메서드는 포함된 것으로 표시된 유형의 객체를 생성하는 데만 사용해야 합니다.

        매개변수:
        clazz - 생성할 객체의 클래스입니다. \@RealmClass(embedded = true) 으로 표시해야 합니다.
        parentObject - 내장된 객체에 대한 참고를 보유해야 하는 객체입니다.
        parentProperty - 참고를 보유한 상위 클래스의 속성입니다. 상위 속성이 목록인 경우 내장된 객체는 해당 목록의 끝에 추가됩니다.
        반환합니다:
        새로 생성된 내장된 객체입니다.
        예외 처리:
        IllegalArgumentException - clazz 이(가) 포함된 클래스가 아니거나 상위 클래스의 속성이 적절한 유형의 객체를 보유할 수 없는 경우
        다음도 참조하세요.
        RealmClass.embedded()
      • copyToRealm

        public <E extends RealmModel> E copyToRealm​(E object,
                                                    ImportFlag... flags)
        RealmObject를 Realm 인스턴스에 복사하고 복사본을 반환합니다. 원본 RealmObject에 대한 추가 변경 사항은 Realm 사본에 반영되지 않습니다. 이는 딥 카피이므로 참고된 모든 객체가 복사됩니다. 이미 이 Realm에 있는 객체는 무시됩니다.

        객체를 복사하면 모든 필드 값이 복사됩니다. 이 객체 및 하위 객체의 설정되지 않은 필드는 제공하지 않으면 기본값으로 설정됩니다.

        매개변수:
        object - RealmObject 를 입력하여 Realm에 복사합니다.
        flags - Realm에 데이터를 삽입하는 동작을 수정하는 모든 플래그입니다.
        반환합니다:
        Realm이 지원하는 속성이 있는 관리되는 RealmObject입니다.
        예외 처리:
        IllegalArgumentException - 객체가 null 이거나 다른 스레드의 Realm 인스턴스에 속한 경우.
      • copyToRealmOrUpdate

        public <E extends RealmModel> E copyToRealmOrUpdate​(E object,
                                                            ImportFlag... flags)
        동일한 PrimaryKey 로 식별되는 기존 RealmObject를 업데이트하거나 기존 객체를 찾을 수 없는 경우 새 복사본을 만듭니다. 이는 딥 카피 또는 업데이트입니다. 즉, 참고된 모든 객체가 복사되거나 업데이트됩니다.

        객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체에서 설정되지 않은 필드는 제공하지 않으면 기본값으로 설정됩니다.

        매개변수:
        object - RealmObject 를 입력하여 복사하거나 업데이트합니다.
        flags - Realm에 데이터를 삽입하는 동작을 수정하는 모든 플래그입니다.
        반환합니다:
        Realm에서 지원하는 모든 속성이 포함된 신규 또는 업데이트된 RealmObject입니다.
        예외 처리:
        IllegalArgumentException - 객체가 null 이거나 정의된 기본 키가 없거나 다른 스레드의 Realm 인스턴스에 속한 경우.
        다음도 참조하세요.
        copyToRealm(RealmModel, ImportFlag...)
      • copyToRealm

        public <E extends RealmModelList<E> copyToRealm​(Iterable<E> objects,
                                                          ImportFlag... flags)
        RealmObjects의 collection을 Realm 인스턴스에 복사하고 해당 복사본을 반환합니다. 원본 RealmObject에 대한 추가 변경 사항은 Realm 사본에 반영되지 않습니다. 이는 참고된 모든 객체가 복사되는 딥 카피입니다. 이미 이 Realm에 있는 객체는 무시됩니다.

        객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체의 설정되지 않은 필드는 제공하지 않으면 기본값으로 설정됩니다.

        매개변수:
        objects - Realm에 복사할 RealmObject입니다.
        flags - Realm에 데이터를 삽입하는 동작을 수정하는 모든 플래그입니다.
        반환합니다:
        Realm에서 managed 속성이 있는 변환된 RealmObject의 목록입니다.
        예외 처리:
        RealmException - 객체 중 하나라도 이미 Realm에 추가된 경우
        IllegalArgumentException - 입력 collection의 요소 중 null 인 경우
      • insert

        public void insert​(Collection<? extends RealmModel> objects)
        관리되지 않는 RealmObject의 목록을 삽입합니다. 이 방법은 삽입된 요소를 반환하지 않고 최소한의 할당 및 검사를 수행하므로 일반적으로 copyToRealm(Iterable, ImportFlag...) 보다 빠릅니다. 삽입된 후에는 원본 객체에 대한 변경 사항이 유지되지 않습니다.

        참고 사항:

        • 제공된 객체가 이미 managed 되고 있는지 확인하지 않으므로 managed 되는 객체를 삽입하면 중복될 수 있습니다. 객체에 프라이머리 키가 없는 경우에만 복제가 발생합니다. 기본 키가 있는 객체는 절대 복제되지 않습니다.
        • 각 요소에 대해 managed RealmObject 을(를) 생성하거나 반환하지 않습니다.
        • 객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체의 설정되지 않은 필드를 제공하지 않으면 기본값으로 설정됩니다.

        managed RealmObject 을 반환하려면 copyToRealm(Iterable, ImportFlag...) 를 사용하고, 그렇지 않으면 객체 수가 많은 경우 일반적으로 이 메서드가 더 빠릅니다.

        매개변수:
        objects - 삽입할 RealmObject입니다.
        예외 처리:
        IllegalStateException - 해당 Realm이 닫힌 경우, 잘못된 스레드에서 호출되었거나 트랜잭션에 속하지 않은 경우.
      • insert

        public void insert​(RealmModel object)
        관리되지 않는 RealmObject를 삽입합니다. 이 방법은 삽입된 요소를 반환하지 않고 최소한의 할당 및 검사를 수행하므로 일반적으로 copyToRealm(RealmModel, ImportFlag...) 보다 빠릅니다. 삽입된 후에는 원본 객체에 대한 변경 사항이 유지되지 않습니다.

        참고 사항:

        • 제공된 객체가 이미 managed 되고 있는지 확인하지 않으므로 managed 되는 객체를 삽입하면 중복될 수 있습니다. 객체에 프라이머리 키가 없는 경우에만 복제가 발생합니다. 기본 키가 있는 객체는 절대 복제되지 않습니다.
        • 각 요소에 대해 managed RealmObject 을(를) 생성하거나 반환하지 않습니다.
        • 객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체의 설정되지 않은 필드를 제공하지 않으면 기본값으로 설정됩니다.

        managed RealmObject 을 반환하려면 copyToRealm(RealmModel, ImportFlag...) 를 사용하고, 그렇지 않으면 객체 수가 많은 경우 일반적으로 이 메서드가 더 빠릅니다.

        매개변수:
        object - 삽입할 RealmObject입니다.
        예외 처리:
        IllegalStateException - 해당 Realm이 닫힌 경우, 잘못된 스레드에서 호출되었거나 트랜잭션에 속하지 않은 경우.
        RealmPrimaryKeyConstraintException - 동일한 프라이머리 키를 가진 두 객체가 삽입되거나 Realm에 프라이머리 키 값이 이미 존재하는 경우
      • insertOrUpdate

        public void insertOrUpdate​(Collection<? extends RealmModel> objects)
        관리되지 않는 RealmObject 목록을 삽입하거나 업데이트합니다. 이 방법은 삽입된 요소를 반환하지 않고 최소한의 할당 및 검사를 수행하므로 일반적으로 copyToRealmOrUpdate(Iterable, ImportFlag...) 보다 빠릅니다. 삽입된 후에는 원본 객체에 대한 변경 사항이 유지되지 않습니다.

        참고 사항:

        • 제공된 객체가 이미 managed 되고 있는지 확인하지 않으므로 managed 되는 객체를 삽입하면 중복될 수 있습니다. 객체에 프라이머리 키가 없는 경우에만 복제가 발생합니다. 기본 키가 있는 객체는 절대 복제되지 않습니다.
        • 각 요소에 대해 managed RealmObject 을(를) 생성하거나 반환하지 않습니다.
        • 객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체의 설정되지 않은 필드를 제공하지 않으면 기본값으로 설정됩니다.

        managed RealmObject 을 반환하려면 copyToRealm(Iterable, ImportFlag...) 를 사용하고, 그렇지 않으면 객체 수가 많은 경우 일반적으로 이 메서드가 더 빠릅니다.

        매개변수:
        objects - 삽입할 RealmObject입니다.
        예외 처리:
        IllegalStateException - 해당 Realm이 닫힌 경우, 잘못된 스레드에서 호출되었거나 트랜잭션에 속하지 않은 경우.
        RealmPrimaryKeyConstraintException - 동일한 프라이머리 키를 가진 두 객체가 삽입되거나 Realm에 프라이머리 키 값이 이미 존재하는 경우
      • insertOrUpdate

        public void insertOrUpdate​(RealmModel object)
        관리되지 않는 RealmObject를 삽입하거나 업데이트합니다. 이 방법은 삽입된 요소를 반환하지 않고 최소한의 할당 및 검사를 수행하므로 일반적으로 copyToRealmOrUpdate(RealmModel, ImportFlag...) 보다 빠릅니다. 삽입된 후에는 원본 객체에 대한 변경 사항이 유지되지 않습니다.

        참고 사항:

        • 제공된 객체가 이미 managed 되고 있는지 확인하지 않으므로 managed 되는 객체를 삽입하면 중복될 수 있습니다. 객체에 프라이머리 키가 없는 경우에만 복제가 발생합니다. 기본 키가 있는 객체는 절대 복제되지 않습니다.
        • 각 요소에 대해 managed RealmObject 을(를) 생성하거나 반환하지 않습니다.
        • 객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체의 설정되지 않은 필드를 제공하지 않으면 기본값으로 설정됩니다.

        managed RealmObject 을 반환하려면 copyToRealm(RealmModel, ImportFlag...) 를 사용하고, 그렇지 않으면 객체 수가 많은 경우 일반적으로 이 메서드가 더 빠릅니다.

        매개변수:
        object - 삽입할 RealmObject입니다.
        예외 처리:
        IllegalStateException - 해당 Realm이 닫힌 경우, 잘못된 스레드에서 호출되었거나 트랜잭션에 속하지 않은 경우.
      • copyToRealmOrUpdate

        public <E extends RealmModelList<E> copyToRealmOrUpdate​(Iterable<E> objects,
                                                                  ImportFlag... flags)
        PrimaryKey 으)로 식별되는 기존 RealmObjects 목록을 업데이트하거나 기존 객체를 찾을 수 없는 경우 새 복사본을 만듭니다. 이는 딥 카피 또는 업데이트입니다. 즉, 참고된 모든 객체가 복사되거나 업데이트됩니다.

        객체를 복사하면 모든 필드 값이 복사됩니다. 객체 및 하위 객체의 설정되지 않은 필드는 제공하지 않으면 기본값으로 설정됩니다.

        매개변수:
        objects - 업데이트하거나 Realm에 복사할 객체 목록입니다.
        flags - Realm에 데이터를 삽입하는 동작을 수정하는 모든 플래그입니다.
        반환합니다:
        신규 또는 업데이트된 모든 RealmObject의 목록입니다.
        예외 처리:
        IllegalArgumentException - RealmObject가 null 이거나 기본 키가 정의되어 있지 않은 경우.
        다음도 참조하세요.
        copyToRealm(Iterable, ImportFlag...)
      • copyFromRealm

        public <E extends RealmModelList<E> copyFromRealm​(Iterable<E> realmObjects)
        이미 저장된 RealmObject의 관리되지 않는 메모리 내 복사본을 만듭니다. 이는 모든 참고 객체를 복사하는 딥 카피입니다.

        복사된 객체는 모두 Realm에서 분리되며 더 이상 자동으로 업데이트되지 않습니다. 이는 복사된 객체에 다른 관리되는 Realm 객체와 더 이상 일치하지 않는 데이터가 포함되어 있을 수 있음을 의미합니다.

        *경고*: 복사된 객체에 대한 모든 변경 사항은 copyToRealmOrUpdate(RealmModel, ImportFlag...) 을 사용하여 Realm에 다시 병합할 수 있지만 변경된 필드뿐만 아니라 모든 필드가 재정의됩니다. 여기에는 다른 객체에 대한 참고가 포함되며 잠재적으로 다른 스레드의 변경 사항을 재정의할 수 있습니다. 이 동작은 ImportFlag를 사용하여 수정할 수 있습니다.

        유형 매개변수:
        E - 객체의 유형입니다.
        매개변수:
        realmObjects - 복사할 RealmObject입니다.
        반환합니다:
        managed RealmObject의 메모리 내 분리된 복사본입니다.
        예외 처리:
        IllegalArgumentException - RealmObject에 더 이상 액세스할 수 없거나 DynamicRealmObject 인 경우
        다음도 참조하세요.
        copyToRealmOrUpdate(Iterable, ImportFlag...)
      • copyFromRealm

        public <E extends RealmModelList<E> copyFromRealm​(Iterable<E> realmObjects,
                                                            int maxDepth)
        이미 저장된 RealmObject의 관리되지 않는 메모리 내 복사본을 만듭니다. 이는 모든 참고 객체를 정의된 깊이까지 복사하는 딥 카피입니다.

        복사된 객체는 모두 Realm에서 분리되며 더 이상 자동으로 업데이트되지 않습니다. 이는 복사된 객체에 다른 관리되는 Realm 객체와 더 이상 일치하지 않는 데이터가 포함되어 있을 수 있음을 의미합니다.

        *경고*: 복사된 객체에 대한 모든 변경 사항은 copyToRealmOrUpdate(Iterable, ImportFlag...) 을 사용하여 Realm에 다시 병합할 수 있지만 변경된 필드뿐만 아니라 모든 필드가 재정의됩니다. 여기에는 maxDepth 에 도달하여 null 일 수 있는 경우에도 다른 객체 참고가 포함됩니다. 이는 잠재적으로 다른 스레드에서 변경한 내용을 재정의할 수도 있습니다. 이 동작은 ImportFlag을 사용하여 수정할 수 있습니다.

        유형 매개변수:
        E - 객체의 유형입니다.
        매개변수:
        realmObjects - 복사할 RealmObject입니다.
        maxDepth - 딥 카피의 제한입니다. 이 깊이 이후의 모든 참고는 null 이 됩니다. 시작 깊이는 0 입니다.
        반환합니다:
        RealmObject의 메모리 내 분리된 복사본입니다.
        예외 처리:
        IllegalArgumentException - maxDepth < 0 인 경우 RealmObject에 더 이상 액세스할 수 없거나 DynamicRealmObject 인 경우
        다음도 참조하세요.
        copyToRealmOrUpdate(Iterable, ImportFlag...)
      • copyFromRealm

        public <E extends RealmModel> E copyFromRealm​(E realmObject)
        이미 지속된 RealmObject 의 관리되지 않는 인메모리 복사본을 만듭니다. 이는 모든 참조 객체를 복사하는 딥 카피입니다.

        복사된 객체는 모두 Realm에서 분리되며 더 이상 자동으로 업데이트되지 않습니다. 이는 복사된 객체에 다른 관리되는 Realm 객체와 더 이상 일치하지 않는 데이터가 포함되어 있을 수 있음을 의미합니다.

        *경고*: 복사된 객체에 대한 모든 변경 사항은 copyToRealmOrUpdate(RealmModel, ImportFlag...) 을 사용하여 Realm에 다시 병합할 수 있지만 변경된 필드뿐만 아니라 모든 필드가 재정의됩니다. 여기에는 다른 객체에 대한 참고가 포함되며 잠재적으로 다른 스레드의 변경 사항을 재정의할 수 있습니다. 이 동작은 ImportFlag를 사용하여 수정할 수 있습니다.

        유형 매개변수:
        E - 객체의 유형입니다.
        매개변수:
        realmObject - RealmObject 를 입력하여 복사합니다.
        반환합니다:
        managed RealmObject 의 메모리 내 분리된 복사본입니다.
        예외 처리:
        IllegalArgumentException - RealmObject에 더 이상 액세스할 수 없거나 DynamicRealmObject 인 경우
        다음도 참조하세요.
        copyToRealmOrUpdate(RealmModel, ImportFlag...)
      • copyFromRealm

        public <E extends RealmModel> E copyFromRealm​(E realmObject,
                                                      int maxDepth)
        이미 지속된 RealmObject 의 관리되지 않는 인메모리 복사본을 만듭니다. 이는 모든 레퍼런스 객체를 정의된 깊이까지 복사하는 딥 카피입니다.

        복사된 객체는 모두 Realm에서 분리되며 더 이상 자동으로 업데이트되지 않습니다. 이는 복사된 객체에 다른 관리되는 Realm 객체와 더 이상 일치하지 않는 데이터가 포함되어 있을 수 있음을 의미합니다.

        *경고*: 복사된 객체에 대한 모든 변경 사항은 copyToRealmOrUpdate(RealmModel, ImportFlag...) 을 사용하여 Realm에 다시 병합할 수 있지만 변경된 필드뿐만 아니라 모든 필드가 재정의됩니다. 여기에는 maxDepth 에 도달하여 null 일 수 있는 경우에도 다른 객체 참고가 포함됩니다. 이는 잠재적으로 다른 스레드에서 변경한 내용을 재정의할 수도 있습니다. 이 동작은 ImportFlag을 사용하여 수정할 수 있습니다.

        유형 매개변수:
        E - 객체의 유형입니다.
        매개변수:
        realmObject - RealmObject 를 입력하여 복사합니다.
        maxDepth - 딥 카피의 제한입니다. 이 깊이 이후의 모든 참고는 null 이 됩니다. 시작 깊이는 0 입니다.
        반환합니다:
        managed RealmObject 의 메모리 내 분리된 복사본입니다.
        예외 처리:
        IllegalArgumentException - maxDepth < 0 인 경우 RealmObject에 더 이상 액세스할 수 없거나 DynamicRealmObject 인 경우
        다음도 참조하세요.
        copyToRealmOrUpdate(RealmModel, ImportFlag...)
      • 위치

        public <E extends RealmModelRealmQuery<E> where​(Class<E> clazz)
        이 유형의 특정 객체를 쿼리하는 데 사용할 수 있는 유형이 지정된 RealmQuery를 반환합니다.
        매개변수:
        clazz - 쿼리할 객체의 클래스입니다.
        반환합니다:
        RealmQuery를 사용하여 이 유형의 특정 객체를 쿼리할 수 있습니다.
        다음도 참조하세요.
        RealmQuery
      • removeChangeListener

        public void removeChangeListener​(RealmChangeListener<Realm> listener)
        지정된 변경 리스너를 제거합니다.
        매개변수:
        listener - 제거할 변경 리스너입니다.
        예외 처리:
        IllegalArgumentException - 변경 리스너가 null 인 경우
        IllegalStateException - 이벤트 루프가 아닌 스레드에서 리스너를 제거하려고 하는 경우.
        다음도 참조하세요.
        RealmChangeListener
      • 모든 변경 리스너 제거

        public void removeAllChangeListeners()
        모든 사용자 정의 변경 수신기를 제거합니다.
        예외 처리:
        IllegalStateException - 이벤트 루프가 아닌 스레드에서 리스너를 제거하려고 하는 경우.
        다음도 참조하세요.
        RealmChangeListener
      • 삭제

        public void delete​(Class<? extends RealmModel> clazz)
        Realm에서 지정된 클래스의 모든 객체를 삭제합니다.
        매개변수:
        clazz - 객체를 제거해야 하는 클래스입니다.
        예외 처리:
        IllegalStateException - Realm이 닫히거나 잘못된 스레드에서 호출된 경우
      • migrateRealm

        public static void migrateRealm​(RealmConfiguration configuration)
                                 throws FileNotFoundException
        지정된 RealmConfiguration과 관련된 마이그레이션을 수동으로 Atlas Triggers합니다. Realm이 이미 최신 버전인 경우 아무 변화도 일어나지 않습니다.
        매개변수:
        configuration - RealmConfiguration
        예외 처리:
        FileNotFoundException - Realm 파일이 존재하지 않는 경우
      • deleteRealm

        public static boolean deleteRealm​(RealmConfiguration configuration)
        파일 시스템에서 지정된 RealmConfiguration 로 지정된 관련 임시 파일과 함께 Realm 파일을 삭제합니다. '.lock'이 있는 임시 파일 확장 프로그램은 삭제되지 않습니다.

        이 메서드를 호출하기 전에 모든 Realm 인스턴스를 닫아야 합니다.

        경고: 동기화된 Realm의 경우 사용자가 제어하는 모든 Realm 인스턴스가 닫히더라도 백그라운드 스레드의 Realm 인스턴스가 닫히지 않을 가능성이 있습니다. 그러면 IllegalStateException 이 발생합니다. https://github.com/realm/realm-java/ 이슈/5416 이슈를 참조하세요.

        매개변수:
        configuration - RealmConfiguration.
        반환합니다:
        false Realm 파일을 삭제할 수 없는 경우. 임시 파일 삭제 실패는 반환 값에 영향을 주지 않습니다. 실패한 모든 파일 삭제가 기록됩니다.
        예외 처리:
        IllegalStateException - 다른 스레드나 다른 프로세스에서 Realm 인스턴스가 열려 있는 경우
      • compactRealm

        public static boolean compactRealm​(RealmConfiguration configuration)
        Realm 파일을 압축합니다. Realm 파일에는 일반적으로 여유 공간/사용하지 않은 공간이 포함되어 있습니다. 이 방법을 사용하면 이 여유 공간이 제거되어 파일 크기가 줄어듭니다. Realm 파일 내의 객체는 그대로 유지됩니다.

        이 메서드를 호출하기 전에 파일을 닫아야 하며, 그렇지 않으면 false 가 반환됩니다.
        파일 시스템에는 최소한 Realm 파일 사본을 위한 여유 공간이 있어야 합니다.
        파일 작업이 실패해도 Realm 파일은 그대로 유지됩니다.

        매개변수:
        configuration - Realm 파일을 가리키는 RealmConfiguration 입니다.
        반환합니다:
        true 성공하면 false , 파일 작업이 실패하면 을 반환합니다.
      • 동결

        public Realm 동결()
        현재 Realm의 동결된 스냅샷을 반환합니다. 이 Realm은 IllegalStateException 발생 없이 모든 스레드에서 읽고 쿼리할 수 있습니다. 동결된 Realm에는 자체 수명 주기가 있으며 Closeable.close() 호출하여 닫을 수 있지만 동결된 사본을 생성한 Realm을 완전히 닫으면 동결된 Realm도 닫힙니다.

        동결된 데이터는 정상적으로 쿼리할 수 있지만 어떤 방식으로든 데이터를 변경하려고 하거나 리스너를 등록하려고 하면 IllegalStateException 이(가) 발생합니다.

        참고: 버전이 다른 많은 수의 Realm을 활성 상태로 유지하면 Realm의 파일 크기에 부정적인 영향을 미칠 수 있습니다. 이러한 상황을 방지하기 위해 RealmConfiguration.Builder.maxNumberOfActiveVersions(long) 을 설정할 수 있습니다.

        반환합니다:
        이 Realm의 동결된 사본입니다.
      • getDefaultModule

        @Nullable
        public static Object getDefaultModule()
        기본 Realm 모듈을 반환합니다. 이 모듈에는 현재 프로젝트에 있는 모든 Realm 클래스가 포함되지만 라이브러리 또는 프로젝트 종속성의 Realm 클래스는 포함되지 않습니다. 이들의 Realm 클래스는 자체 모듈을 사용하여 노출해야 합니다.
        반환합니다:
        기본 Realm 모듈 또는 기본 모듈이 없는 경우 null 입니다.
        예외 처리:
        RealmException - 모듈의 인스턴스를 생성할 수 없는 경우.
        다음도 참조하세요.
        RealmConfiguration.Builder.modules(Object, Object...)
      • getGlobalInstanceCount

        public static int getGlobalInstanceCount​(RealmConfiguration configuration)
        이 구성을 사용하는 현재 프로세스의 모든 스레드에서 열려 있는 Realm 인스턴스의 현재 수를 반환합니다. 여기에는 동적 Realm과 일반 Realm이 모두 포함됩니다.
        매개변수:
        configuration - Realm의 경우 RealmConfiguration 입니다.
        반환합니다:
        모든 스레드에서 열려 있는 Realm 인스턴스 수입니다.
      • getLocalInstanceCount

        public static int getLocalInstanceCount​(RealmConfiguration configuration)
        이 메서드를 호출하는 스레드에서 열려 있는 Realm 인스턴스의 현재 수를 반환합니다. 여기에는 동적 Realm과 일반 Realm이 모두 포함됩니다.
        매개변수:
        configuration - Realm의 경우 RealmConfiguration 입니다.
        반환합니다:
        호출자 스레드에서 열려 있는 Realm 인스턴스의 수입니다.
      • getApplicationContext

        @Nullable
        public static Context getApplicationContext()
        init(Context) 또는 init(Context, String) 으)로 Realm을 초기화할 때 사용되는 애플리케이션 컨텍스트를 가져옵니다.
        반환합니다:
        init(Context) 또는 init(Context, String) 으로 Realm을 초기화할 때 사용되는 애플리케이션 컨텍스트이거나, Realm이 아직 초기화되지 않은 경우 null입니다.
      • setAutoRefresh

        public void setAutoRefresh​(boolean autoRefresh)
        Realm 인스턴스의 자동 새로 고침 상태를 설정합니다.

        자동 새로 고침은 다른 스레드에서 동일한 파일에서 작동하는 Realm에서 커밋이 수행될 때 현재 Realm 인스턴스와 모든 파생 객체(RealmResults 및 RealmObject 인스턴스)를 자동으로 업데이트할 수 있는 기능입니다. 이 기능은 Realm 인스턴스가 Looper 활성화된 스레드에 있는 경우에만 사용할 수 있습니다.

        매개변수:
        autoRefresh - true 은 자동 새로 고침을 켜고 false 은 끕니다.
        예외 처리:
        IllegalStateException - 이벤트 루프가 아닌 스레드에서 호출된 경우.
      • isAutoRefresh

        공개 부울 isAutoRefresh()
        Realm 인스턴스의 자동 새로 고침 상태를 검색합니다.
        반환합니다:
        자동 새로 고침 상태.
      • 새로 고침

        public void refresh()
        Realm 인스턴스와 해당 인스턴스에서 오는 모든 RealmResults 및 RealmObjects 인스턴스를 새로 고칩니다. 또한 필요한 경우 Realm과 연결된 모든 리스너를 호출합니다.

        경고: 비동기 쿼리가 있는 스레드에서 이 메서드를 호출하면 해당 쿼리가 동기 쿼리로 바뀝니다. 즉, 을 와 함께 사용하여 Realm 인스턴스를 얻은 경우 이 메서드는 RealmException RealmConfiguration.Builder.allowQueriesOnUiThread(boolean) 을 발생시킵니다.true 대부분의 경우 이 방법을 사용하는 것보다 주어진 스레드에서 Realm의 변경 사항에 대한 알림을 받으려면 RealmChangeListener을 사용하는 것이 좋습니다.

        예외 처리:
        IllegalStateException - 트랜잭션 내에서 새로고침을 시도하는 경우.
        RealmException - RealmConfiguration.Builder.allowQueriesOnUiThread(boolean) 를 통해 옵트아웃한 후 UI 스레드에서 호출한 경우
      • isInTransaction

        공개 부울 isInTransaction()
        Realm이 현재 트랜잭션 중에 있는지 확인합니다.
        반환합니다:
        true 트랜잭션 내에 있으면 false 를 반환합니다.
      • writeCopyTo

        public void writeCopyTo​(File destination)
        Realm의 압축된 복사본을 지정된 대상 파일에 씁니다. 결과 파일은 다른 장치에서 로컬 또는 동기화된 Realm을 부트스트랩하기 위한 초기 데이터 세트로 사용할 수 있습니다.

        대상 파일이 이미 존재할 수 없습니다.

        트랜잭션 내에서 호출하면 마지막 트랜잭션이 커밋될 때의 데이터가 아니라 현재 데이터를 기록합니다.

        매개변수:
        destination - Realm을 저장할 파일입니다.
        예외 처리:
        IllegalArgumentException - 대상 인수가 null인 경우.
        RealmFileException - 기본 Realm 파일에 액세스하거나 대상 파일에 쓸 때 오류가 발생한 경우
        IllegalStateException - UI 스레드에서 호출된 경우.
        IllegalStateException - 모든 클라이언트 변경 사항이 서버에 통합되지 않은 경우.
      • writeEncryptedCopyTo

        public void writeEncryptedCopyTo​(File destination,
                                         byte[] key)
        Realm의 압축되고 암호화된 복사본을 지정된 대상 파일에 씁니다. 결과 파일은 다른 장치에서 로컬 또는 동기화된 Realm을 부트스트랩하기 위한 초기 데이터 세트로 사용할 수 있습니다.

        대상 파일이 이미 존재할 수 없습니다.

        트랜잭션 내에서 호출하면 마지막 트랜잭션이 커밋될 때의 데이터가 아니라 현재 데이터를 기록합니다.

        매개변수:
        destination - Realm을 저장할 파일입니다.
        key - 64바이트 암호화 키.
        예외 처리:
        IllegalArgumentException - 대상 인수가 null인 경우.
        RealmFileException - 기본 Realm 파일에 액세스하거나 대상 파일에 쓸 때 오류가 발생한 경우
        IllegalStateException - UI 스레드에서 호출된 경우.
        IllegalStateException - 모든 클라이언트 변경 사항이 서버에 통합되지 않은 경우.
      • waitForChange

        @Deprecated
        공개 부울 waitForChange()
        더 이상 사용되지 않습니다.
        이 메서드는 다음 주요 릴리스에서 제거될 예정입니다.
        Blocks the current thread until new changes to the Realm are available or stopWaitForChange() is called from another thread. stopWaitForChange가 호출되면 이후의 이 메서드에 대한 모든 호출은 즉시 false를 반환합니다.
        반환합니다:
        true Realm이 최신 버전으로 업데이트된 경우 false ,stopWaitForChange를 호출하여 취소된 경우.
        예외 처리:
        IllegalStateException - 트랜잭션 내에서 또는 루퍼 스레드에서 호출하는 경우.
        RealmMigrationNeededException - 최신 버전에 호환되지 않는 스키마 변경이 포함된 경우 Realm 를 입력합니다.
      • stopWaitForChange

        @Deprecated
        public void stopWaitForChange()
        더 이상 사용되지 않습니다.
        이 메서드는 다음 주요 릴리스에서 제거될 예정입니다.
        현재 waitForChange()false 을 즉시 반환하도록 합니다. 이 함수가 호출되면 이후의 모든 waitForChange 호출은 즉시 false 을 반환합니다.

        이 메서드는 스레드로부터 안전하며 이 메서드는 waitForChange를 호출한 스레드가 아닌 다른 스레드에서만 호출해야 합니다.

        예외 처리:
        IllegalStateException - Realm 인스턴스가 이미 닫힌 경우.
      • startTransaction

        public void beginTransaction()
        BaseRealm.commitTransaction() 에 의해 닫히거나 BaseRealm.cancelTransaction() 에 의해 중단되어야 하는 트랜잭션을 시작합니다. 트랜잭션은 Realm 내에서 객체를 원자적으로 생성, 업데이트 및 삭제하는 데 사용됩니다.

        트랜잭션을 시작하기 전에 Realm 인스턴스는 다른 스레드의 모든 변경 사항을 포함하기 위해 최신 버전으로 업데이트됩니다. 이 업데이트는 등록된 RealmChangeListener 을(를) trigger하지 않습니다.

        따라서 트랜잭션 내부에서 수정해야 하는 항목을 쿼리하는 것이 좋습니다. 그렇지 않으면 트랜잭션이 시작될 때 일부 결과가 삭제되거나 수정될 위험이 있습니다.

         
         // Don't do this
         RealmResults<Person> persons = realm.where(Person.class).findAll();
         realm.beginTransaction();
         persons.first().setName("John");
         realm.commitTransaction();
        
         // Do this instead
         realm.beginTransaction();
         RealmResults<Person> persons = realm.where(Person.class).findAll();
         persons.first().setName("John");
         realm.commitTransaction();
         
         

        참고: 트랜잭션을 중첩하는 것은 불가능합니다. 트랜잭션 내에서 트랜잭션을 시작하면 예외가 발생합니다.

        예외 처리:
        RealmMigrationNeededException - 최신 버전에 호환되지 않는 스키마 변경이 포함된 경우 Realm 를 입력합니다.
      • commitTransaction()

        public void commitTransaction()
        BaseRealm.beginTransaction() 이후의 모든 변경 사항은 디스크에 유지되며 Realm은 읽기 전용으로 되돌아갑니다. 다른 모든 Realm 인스턴스에 변경 사항이 발생했음을 알리기 위해 이벤트가 전송됩니다. 이벤트가 수신되면 다른 Realm은 해당 객체와 RealmResults 을(를) 업데이트하여 이 커밋의 변경 사항을 반영합니다.
      • 취소 트랜잭션

        public void cancelTransaction()
        현재 쓰기 트랜잭션(write transaction)에서 이루어진 모든 쓰기(생성, 업데이트 또는 삭제된 객체)를 되돌리고 트랜잭션을 종료합니다.

        Realm이 읽기 전용으로 돌아갑니다.

        트랜잭션 중이 아닐 때 이 함수를 호출하면 예외가 발생합니다.

      • IsFrozen

        공개 부울 isFrozen()
        이 Realm이 동결되었는지 여부를 반환합니다.
        반환합니다:
        true Realm이 동결된 경우 false 을 반환합니다.
        다음도 참조하세요.
        freeze()
      • getNumberOfActiveVersions

        public long getNumberOfActiveVersions()
        이 Realm에서 현재 보유하고 있는 활성 버전의 현재 수를 반환합니다.

        활성 버전이 많으면 Realm 파일의 크기에 부정적인 영향을 미칩니다. 자세한 내용 은 FAQ 를 참조하세요.

        반환합니다:
        현재 Realm에서 보유 중인 활성 버전의 수입니다.
        다음도 참조하세요.
        RealmConfiguration.Builder.maxNumberOfActiveVersions(long)
      • getPath

        public String getPath()
        이 Realm이 디스크에서 유지되는 표준 경로를 반환합니다.
        반환합니다:
        Realm 파일의 표준 경로입니다.
        다음도 참조하세요.
        File.getCanonicalPath()
      • getVersion

        public long getVersion()
        이 Realm의 스키마 버전을 반환합니다.
        반환합니다:
        이 Realm을 지원하는 Realm 파일의 스키마 버전입니다.
      • 닫기

        public void close()
        Realm 인스턴스와 인스턴스의 모든 리소스를 닫습니다.

        메모리, 파일 디스크립터가 유출되거나 Realm 파일의 크기가 측정 이상으로 커지지 않도록 작업을 완료한 후에는 Realm 인스턴스를 닫는 것을 항상 기억하는 것이 중요합니다.

        다음에 의해 지정됩니다:
        close 인터페이스에서 AutoCloseable
        다음에 의해 지정됩니다:
        close 인터페이스에서 Closeable
        예외 처리:
        IllegalStateException - 다른 스레드에서 닫으려고 하는 경우.
      • isClosed

        public 부울 isClosed()
        Realm 인스턴스가 이미 닫혔는지 확인합니다.
        반환합니다:
        true 닫히면 false , 그렇지 않으면 .
        예외 처리:
        IllegalStateException - 다른 스레드에서 닫으려고 하는 경우.
      • getSubscriptions

        public SubscriptionSet getSubscriptions()
        이 Realm과 연결된 구독 세트를 반환합니다. 구독 세트는 이 영역과 서버 간에 동기화되는 데이터를 정의하는 쿼리 세트를 정의합니다.

        이 방법은 flexible sync를 사용하는 동기화된 영역에만 적용할 수 있습니다.

        반환합니다:
        이 영역과 연결된 구독 세트입니다.
        예외 처리:
        IllegalStateException - 이 영역이 로컬 영역 또는 파티션 기반 동기화 영역인 경우
      • deleteAll

        public void deleteAll()
        이 Realm에서 모든 객체를 삭제합니다.
        예외 처리:
        IllegalStateException - Realm이 닫히거나 잘못된 스레드에서 호출된 경우