The Android Developer Challenge is back! Submit your idea before December 2.

Room 지속성 라이브러리는 SQLite를 완벽히 활용하면서 강력한 데이터베이스 액세스를 지원하는 추상화 계층을 SQLite에 제공합니다. 자세한 내용은 참조 문서에서 확인하세요.

종속성 선언

Room에 종속성을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.

Room의 종속성에는 Room 마이그레이션 테스트Room RxJava가 포함됩니다.

앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속성을 추가합니다.

    dependencies {
      def room_version = "2.2.0-beta01"

      implementation "androidx.room:room-runtime:$room_version"
      annotationProcessor "androidx.room:room-compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor

      // optional - Kotlin Extensions and Coroutines support for Room
      implementation "androidx.room:room-ktx:$room_version"

      // optional - RxJava support for Room
      implementation "androidx.room:room-rxjava2:$room_version"

      // optional - Guava support for Room, including Optional and ListenableFuture
      implementation "androidx.room:room-guava:$room_version"

      // Test helpers
      testImplementation "androidx.room:room-testing:$room_version"
    }
    

Kotlin 확장 프로그램 사용에 관한 정보는 ktx 문서를 참조하세요.

종속성에 관한 자세한 내용은 빌드 종속성 추가를 참조하세요.

컴파일러 옵션 구성

Room에는 다음과 같은 주석 프로세서 옵션이 있습니다.

  • room.schemaLocation: 데이터베이스 스키마를 지정된 디렉터리의 JSON 파일로 내보내도록 구성하고 사용 설정합니다. 자세한 내용은 Room 마이그레이션을 참조하세요.
  • room.incremental: Gradle 증분 주석 프로세서를 사용 설정합니다.
  • room.expandProjection: 최상위 별표 투영을 확장하면 DAO 메서드 반환 유형에 정의된 열만 포함하기 위해 쿼리를 다시 쓰도록 Room을 구성합니다.

다음 코드 스니펫에서는 이러한 옵션을 구성할 수 있는 방법을 예를 들어 보여줍니다.

    android {
        ...
        defaultConfig {
            ...
            javaCompileOptions {
                annotationProcessorOptions {
                    arguments = [
                        "room.schemaLocation":"$projectDir/schemas".toString(),
                        "room.incremental":"true",
                        "room.expandProjection":"true"]
                }
            }
        }
    }
    

버전 2.2.0-beta01

2019년 8월 22일

androidx.room:room-*:2.2.0-beta01이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

버그 수정

  • 특정 시간이 지나면 Coroutine Flow 쿼리가 새 값 출력을 중지하는 버그를 수정했습니다. (b/139175786)
  • Room 1.0 이후 마이그레이션하지 않은 데이터베이스를 열 때 Room에서 레거시 스키마 해시 코드를 허용하지 않아서 잘못된 스키마로 인해 런타임 충돌이 발생하는 버그를 수정했습니다. (b/139306173)

버전 2.2.0-alpha02

2019년 8월 7일

androidx.room:room-*:2.2.0-alpha02가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

새로운 기능

  • Coroutines Flow: @Query DAO 메서드는 이제 Flow<T> 반환 형식을 사용할 수 있습니다. 쿼리 중인 관찰 테이블이 무효화되면 반환된 Flow는 새 값 집합을 다시 방출합니다. Channel<T> 반환 형식을 사용하여 DAO 함수를 선언하면 오류가 발생합니다. 따라서 Room에서는 대신 Flow를 사용한 후 인접 함수를 사용하여 FlowChannel로 변환하는 것이 좋습니다. b/130428884
  • 확장 투영: Room에서 반환 형식이 POJO인 열만 포함하도록 별표 투영을 사용하여 쿼리를 다시 쓸 수 있도록 하는 새로운 실험 컴파일러 옵션 room.expandProjection이 추가되었습니다. 예를 들어, @Query("SELECT * FROM Song")를 사용하는 DAO 메서드는 필드를 2개만 포함하는 SongIdAndTitle이라는 POJO를 반환합니다. 그러면 반환 형식을 만족하는 최소 열 집합을 가져오도록 Room에서 쿼리를 SELECT id, title FROM Song으로 다시 씁니다. 그러면 쿼리가 POJO 반환 형식에 일치하는 필드가 없는 추가 열을 반환할 때 표시되는 CURSOR_MISMATCH 경고가 나타나지 않습니다.
  • onDestructiveMigrate는 Room에서 데이터베이스를 파괴적으로 마이그레이션할 때 사용하도록 RoomDatabase.Callback에 추가된 새 콜백 API입니다. b/79962330

버그 수정

  • 필드가 보호된 경우 Room에서 메서드를 필드 setter로 사용하여 잘못된 코드를 생성하는 버그를 수정했습니다. b/136194628
  • 다중 인스턴스 무효화를 사용하도록 지정하고 무효화 서비스가 종료된 경우 두 번째 프로세스에서 InvalidationTracker가 NPE를 발생시키는 버그를 수정했습니다. b/137454915
  • Room에서 @RawQuery 주석이 달린 상속된 정지 함수의 반환 형식을 올바르게 식별하지 못하는 버그를 수정했습니다. b/137878827
  • 관련 키가 BLOB 형식인 경우 비슷한 ByteBuffer를 사용하도록 @Relation용으로 생성되는 코드를 업데이트했습니다. b/137881998
  • Room에서 @Insert, @Update@Delete의 부분 항목 매개변수로 사용되는 POJO에 setter가 누락되었음을 표시하는 버그를 수정했습니다. b/138664463
  • 항목 클래스가 특정 DAO 메서드에서 사용될 때 Room에서 @Entity를 통해 무시되는 열에 getter 및 setter가 누락되었음을 표시하는 버그를 수정했습니다. b/138238182
  • 재사용된 매개변수로 쿼리를 실행할 때 Room에서 명명된 바인딩 평균을 위치별 평균으로 올바르게 변환하지 못하고 런타임 예외가 발생하는 버그를 수정했습니다. b/137254857

버전 2.2.0-alpha01

2019년 7월 10일

새로운 기능

  • 사전 패키지 데이터베이스: 데이터베이스 파일이 이미 채워진 경우에는 이제 RoomDatabase.Builder에서 두 가지 새로운 API를 사용하여 RoomDatabase를 만들 수 있습니다. createFromAsset()은 미리 채워진 데이터베이스 파일이 APK의 자산 폴더에 있는 경우에 사용하고, createFromFile()은 파일이 임의의 위치에 있는 경우에 사용합니다. 이 API를 사용하면 대체 마이그레이션 중에 Room에서 미리 채워진 데이터베이스를 사용 가능한 경우 다시 복사합니다. 그렇지 않으면 모든 테이블을 삭제하고 다시 생성하는 방식으로 파괴적인 마이그레이션 동작이 변경됩니다. b/62185732
  • 스키마 기본값: @ColumnInfo에는 이제 열의 기본값을 지정하는 데 사용할 수 있는 defaultValue라는 새 속성이 있습니다. 기본값은 데이터베이스 스키마의 일부이며 지정된 경우 마이그레이션 중에 유효성이 검사됩니다. b/64088772

    참고: 데이터베이스 스키마에 기본값이 이미 있는 경우(예: ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z를 통해 추가된 값) @ColumnInfo를 통해 기본값을 동일한 열로 정의하려면 마이그레이션을 제공하여 산정되지 않은 기본값의 유효성을 검사해야 할 수 있습니다. 자세한 내용은 Room 마이그레이션을 참조하세요.

  • 다대다 관계: @Relation에는 이제 새로운 주석 @Junction에서 정션 테이블(조인 테이블이라고도 함)을 통해 충족되어야 하는 관계를 선언하는 데 사용되는 associateBy라는 새 속성이 있습니다. b/69201917
  • 일대일 관계: @Relation으로 주석 처리된 POJO 필드가 List 또는 Set 형식으로 제한되어 단일 값 관계를 효과적으로 나타낼 수 있습니다. b/62905145
  • 타겟 항목: DAO 주석 @Insert, @Update@Delete에는 이제 DAO 메서드가 작동할 타겟 테이블을 지정할 수 있는 targetEntity라는 새 속성이 있습니다. 이 속성은 부분 항목으로 해석되는 임의의 POJO를 DAO 메서드의 매개변수로 허용합니다. 실제로 부분 삽입, 삭제 및 업데이트를 허용합니다. b/127549506
  • Gradle 증분 주석 프로세서: Room은 이제 Gradle 분리 주석 프로세서이며 room.incremental 프로세서 옵션을 통해 증분성을 활성화할 수 있습니다. 자세한 내용은 Room 컴파일러 옵션을 참조하세요. 문제가 발생하면 여기서 버그를 제출하세요. 향후 안정화 버전에서 증분성을 기본적으로 활성화할 계획입니다. b/112110217

버그 수정

  • Room에서는 쿼리를 완료하기 전에 쿼리의 Rx 스트림이 삭제된 경우 더 이상 EmptySetResultException을 전역 오류 처리기에 전파하지 않습니다. b/130257475
  • @RawQuery로 주석 처리된 정지 DAO 함수에 반환 형식이 없을 때 Room에 잘못된 오류 메시지가 표시되는 버그를 수정했습니다. b/134303897
  • Room에서는 더 이상 원시 형식으로 DAO 어댑터를 생성하지 않습니다. b/135747255

버전 2.1.0

2019년 6월 13일

Room 2.0.0이 2.1.0-rc01에서 변경 없이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

2.0.0 이후 중요한 변경사항

  • FTS: 이제 Room에서 매핑 FTS3 또는 FTS4 테이블이 있는 항목을 지원합니다. 이제 @Entity로 주석 처리된 클래스에 @Fts3 또는 @Fts4 주석을 추가하여 매핑 전체 텍스트 검색 테이블이 있는 클래스를 선언할 수 있습니다. 추가 맞춤설정을 위한 FTS 옵션은 주석의 메서드를 통해 사용할 수 있습니다.
  • Views: 이제 Room에서 @DatabaseView 주석을 사용하여 view라고도 알려진 저장된 쿼리로 클래스를 선언할 수 있습니다.
  • 코루틴: DAO 메서드는 현재 정지된 기능일 수 있습니다. 이 기능을 활용하려면 종속성에 room-ktx를 포함하세요. 또한 ktx 아티팩트는 코루틴 내에서 데이터베이스 트랜잭션을 수행하기 위한 RoomDatabase.withTransaction 확장 함수를 제공합니다.
  • Auto Value: 이제 Room에서 AutoValue 주석이 달린 클래스를 항목과 POJO로 선언할 수 있습니다. 이제 auto value 주석이 달린 클래스의 추상 메서드에서 Room 주석 @PrimaryKey, @ColumnInfo, @Embedded@Relation을 선언할 수 있습니다. 이러한 주석은 @CopyAnnotations와 함께 제공되어야 Room에서 올바르게 이해할 수 있습니다.
  • 추가 비동기 지원: @Insert, @Delete 또는 @Update로 주석 처리된 DAO 메서드가 이제 INSERT, DELETE 또는 UPDATE를 포함하는 @Query와 함께 Completable, SingleMaybe Rx 반환 유형과 Guava의 ListenableFuture 반환 유형을 지원하고, 기능을 정지할 수도 있습니다.
  • enableMultiInstanceInvalidation은 같은 데이터베이스 파일을 사용하는 RoomDatabase의 여러 인스턴스에 걸쳐 무효화를 활성화하는 RoomDatabase.Builder의 새 API입니다.
  • fallbackToDestructiveMigrationOnDowngrade는 다운그레이드가 발생하면 자동으로 데이터베이스를 재생성하는 RoomDatabase.Builder의 새 API입니다.
  • ignoredColumns는 무시된 필드를 이름별로 나열하는 데 사용할 수 있는 @Entity 주석의 새 API입니다.
  • 이제 Room이 필드를 vars로 선언할 필요가 없도록 데이터 클래스에서 Kotlin의 기본 생성자를 적절히 사용합니다.

버전 2.1.0-rc01

2019년 5월 29일

버그 수정

  • 이미 설정된 temp_store 구성으로 인해 발생할 수 있는 Room 초기화 오류를 수정했습니다. b/132602198
  • SQLite 3.27.0 이상을 사용하는 사용자에게 표시되는 큰따옴표 사용 경고를 수정했습니다. b/131712640
  • 여러 무효화 검사가 병렬로 발생할 때 InvalidationTracker가 장애를 일으키는 버그를 수정했습니다. b/133457594

버전 2.1.0-beta01

2019년 5월 7일

androidx.room 2.1.0-beta01이 2.1.0-alpha07에서 변경 없이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

버전 2.1.0-alpha07

2019년 4월 25일

API/동작 변경사항

  • RoomDatabase.withTransaction 확장 함수가 CoroutineScope를 포함하는 함수 블록을 더 이상 수신기로 사용하지 않도록 변경되었습니다. 이제 트랜잭션 블록에서 작업을 동시에 실행하는 데 필요한 추가 coroutineScope { } 래퍼를 건너뛸 수 없습니다.

버그 수정

  • Room에서 Collection 형식 매개변수를 포함하는 Kotlin DAO 함수의 TypeConverter를 일치시키지 못하는 버그를 수정했습니다. b/122066791

버전 2.1.0-alpha06

2019년 3월 22일

API/동작 변경사항

  • 이제 Room에서 데이터베이스 트랜잭션을 실행하기 위해 둘 이상의 스레드를 사용하지 않도록 비동기 트랜잭션 쿼리를 직렬화했습니다. 트랜잭션에 사용할 실행 프로그램을 구성할 수 있도록 RoomDatabase.Builder.setTransactionExecutor(Executor)를 추가했습니다.
  • RoomDatabase.runInTransaction(Callable)은 더 이상 확인된 예외를 RuntimeExceptions로 래핑하지 않습니다. b/128623748

버그 수정

  • 콘텐츠 테이블과 외부 콘텐츠 FTS 테이블 모두를 위한 관찰자가 추가된 경우 무효화 추적기가 콘텐츠 테이블 관찰을 중지하는 버그를 수정했습니다. b/128508917
  • Room의 SQLite 문법을 SQLite 3.24.0과 일치하도록 업데이트했습니다. b/110883668

버전 2.1.0-alpha05

2019년 3월 13일

새로운 기능

  • RoomDatabase.withTransaction 확장 함수를 사용하면 코루틴 내에서 데이터베이스 트랜잭션을 안전하게 수행할 수 있습니다. Room 확장 함수를 코루틴 지원과 함께 room-ktx 아티팩트에서 사용할 수 있습니다.
  • 이제 @Transaction으로 주석 처리된 비추상 DAO 메서드가 정지된 함수가 될 수 있습니다. b/120241587

API/동작 변경사항

  • 다른 androidx 아티팩트와 같은 명칭에 따라 room-coroutines 아티팩트의 이름을 room-ktx로 변경했습니다.
  • RoomDatabasebeginTransaction, setTransactionSuccessfulendTransactionrunInTransactionroom-ktx 확장 함수 withTransaction에서 지원 중단되었습니다.

버그 수정

  • 사용된 tokenizer가 단순할 때 tokenizer 인수가 삭제되는 버그를 수정했습니다. b/125427014
  • Room에서 형식이 내부 클래스인 매개변수를 포함하는 정지된 함수를 올바르게 식별하지 못하는 버그를 수정했습니다. b/123767877
  • INSERT, UPDATE 또는 DELETE 문을 포함하는 지연된 @Query DAO 메서드가 메인 스레드에서 쿼리를 준비하는 버그를 수정했습니다. b/123695593
  • Room에서 특정 정지 함수에 대해 잘못된 코드를 생성하는 다양한 버그를 수정했습니다. b/123466702b/123457323
  • 생성된 코드에서 지원 중단된 메서드 사용이 올바르게 억제되지 않는 버그를 수정했습니다. b/117602586
  • 손상된 데이터베이스를 올바르게 처리하기 위한 수정사항이 포함된 1.0.2로 androidx.sqlite의 Room 종속성을 업데이트했습니다. b/124476912

알려진 문제

  • Room 2.1.0-alpha05는 Maven Central(KT-27991)에서 현재 제공되지 않는 kotlinx-metadata-jvm 아티팩트에 종속됩니다. 프로젝트 저장소에 maven { url "https://kotlin.bintray.com/kotlinx/" }를 추가하여 이 종속성을 해결할 수 있습니다.

버전 2.1.0-alpha04

2019년 1월 25일

새로운 기능

  • INSERT, UPDATE 또는 DELETE 문을 포함하는 @Query로 주석 처리된 DAO 메서드는 이제 Single, Mayble, CompletableListenableFuture 비동기 유형을 반환할 수 있습니다. 또한 정지된 함수일 수 있습니다. b/120227284

API/동작 변경사항

  • Room에서는 이제 @Transaction으로 주석 처리된 비추상 DAO 메서드가 Single, Mayble, Completable, LiveData, ListenableFuture 등과 같은 비동기 유형을 반환할 경우 오류가 발생합니다. 트랜잭션은 스레드 제한이 있으므로 현재 Room에서 다른 스레드에 있는 쿼리를 수행 가능한 함수 주변에서 트랜잭션을 시작 및 종료할 수 없습니다. b/120109336
  • OnConflictStrategy.FAILOnConflictStrategy.ROLLBACK은 Android의 현재 SQLite 바인딩에서 의도한 대로 동작하지 않으므로 @Deprecated로 지정되었습니다. b/117266738

버그 수정

  • DAO 메서드가 정지된 함수일 경우 Room에서 반환 유형의 TypeConverter가 올바르게 사용되지 않는 버그를 수정했습니다. b/122988159
  • Room에서 상속된 정지된 함수를 정지되지 않은 것으로 잘못 식별하는 버그를 수정했습니다. b/122902595
  • @Embedded 필드가 상위 클래스에 있고 여러 하위 클래스에서 사용될 경우 Room에서 잘못된 코드를 생성하는 버그를 수정했습니다. b/121099048
  • beginTransaction()endTransaction() 사이의 DAO 정지 함수를 호출할 때 데이터베이스가 교착 상태에 빠지는 문제를 해결했습니다. b/120854786

버전 2.1.0-alpha03

2018년 12월 4일

API 변경사항

  • @Fts3/@Fts4의 FTS tokenizer가 이제 Enum 대신 문자열을 취합니다. 이렇게 하면 Room에서 맞춤 tokenizer를 사용할 수 있습니다. 내장된 tokenizer는 여전히 FtsOptions에서 문자열 상수로 정의됩니다. b/119234881

새로운 기능

  • 코루틴: DAO 메서드는 현재 일시정지된 기능일 수 있습니다. Room에서 정지된 함수를 지원하기 위해 새로운 아티팩트인 room-coroutines가 출시되었습니다. b/69474692
  • @Insert, @Delete 또는 @Update로 주석 처리된 DAO 메서드는 이제 ListenableFuture를 반환 유형으로 지원합니다. b/119418331

버그 수정

  • Room에서 @EntityignoredColumns 속성에 있는 열이 포함된 생성자를 올바르게 찾지 못하는 버그를 수정했습니다. b/119830714
  • Room이 DAO 메서드 매개변수의 생성된 구현에서 DAO 메서드 매개변수를 최종으로 표시하지 않는 버그가 수정되었습니다. b/118015483
  • 특수 기호가 있는 쿼리에서 오류를 보고할 때 Room의 프로세서가 다운되는 버그가 수정되었습니다. b/119520136
  • Room에서 기타 다양한 Collection 구현을 IN 표현식의 인수로 허용하지 않는 버그를 수정했습니다. b/119884035
  • 지속적으로 관찰할 경우 Room에서 반환된 LiveData가 가비지를 수집하여 더 이상 새 데이터를 생산하지 않게 하는 버그가 수정되었습니다. b/74477406
  • 잠금 경합을 줄이기 위해 RoomDatabase의 닫기 잠금을 업데이트했습니다. b/117900450

버전 2.1.0-alpha02

2018년 10월 30일

새로운 기능

  • @DatabaseView에서 @Relation 참조 지원을 추가했습니다. b/117680932

버그 수정

  • Rx 반환 유형에서 구독 및 배치할 때 Room이 기본 스레드에서 디스크 I/O를 수행하는 버그가 수정되었습니다. b/117201279
  • Room이 Kotlin 엔티티 클래스에서 필드에 적절한 유형 변환기를 찾지 못하는 버그가 수정되었습니다. b/111404868
  • Room에서 인수가 없는 Kotlin 기본 메서드가 포함된 DAO 인터페이스 구현에 잘못된 코드를 생성하는 버그를 수정했습니다. b/117527454
  • Room의 SQLite 문법 파서가 업데이트되었으며 빌드 시간이 오래 걸리는 성능 문제가 수정되었습니다. b/117401230

버전 2.1.0-alpha01

2018년 10월 8일

새로운 기능

  • FTS: 이제 Room에서 매핑 FTS3 또는 FTS4 테이블이 있는 항목을 지원합니다. 이제 @Entity 주석이 있는 클래스에 @Fts3 또는 @Fts4 주석을 추가하여 매핑 전체 텍스트 검색 테이블이 있는 클래스를 선언할 수 있습니다. 추가 맞춤설정을 위한 FTS 옵션은 주석의 메서드를 통해 사용할 수 있습니다. b/62356416
  • Views: 이제 Room에서 @DatabaseView 주석을 사용하여 view라고도 알려진 저장된 쿼리로 클래스를 선언할 수 있습니다. b/67033276
  • Auto Value: 이제 Room에서 AutoValue 주석이 달린 클래스를 항목과 POJO로 선언할 수 있습니다. 이제 auto value 주석이 달린 클래스의 추상 메서드에서 Room 주석 @PrimaryKey, @ColumnInfo, @Embedded@Relation을 선언할 수 있습니다. 이러한 주석은 @CopyAnnotations와 함께 제공되어야 Room에서 올바르게 이해할 수 있습니다. b/62408420
  • 추가 Rx 반환 유형 지원: @Insert, @Delete 또는 @Update로 주석 처리된 DAO 메서드가 이제 Completable, Single<T>Maybe<T> Rx 반환 유형을 지원합니다. b/63317956
  • @Relation이 포함된 변경할 수 없는 유형: 이전에는 Room에서 @Relation 주석이 달린 필드가 설정 가능해야 했지만, 지금은 생성자 매개변수로 허용됩니다.
  • enableMultiInstanceInvalidation: 같은 데이터베이스 파일을 사용하는 RoomDatabase의 여러 인스턴스에 걸쳐 무효화를 활성화하는 RoomDatabase.Builder의 새 API입니다. 이 다중 인스턴스 무효화 메커니즘은 여러 프로세스에서 작동합니다. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: 다운그레이드가 발생하면 자동으로 데이터베이스를 재생성하는 RoomDatabase.Builder의 새 API입니다. b/110416954
  • ignoredColumns: 무시된 필드를 이름별로 나열하는 데 사용할 수 있는 @Entity 주석의 새 API입니다. 엔티티의 상속된 필드를 무시할 때 유용합니다. b/63522075

API/동작 변경사항

  • RoomDatabasemCallbackmDatabase과 이제 @Deprecated되었으며 Room의 다음 정식 버전에서 삭제될 예정입니다. b/76109329

버그 수정

  • Room에서 초기화 중에 손상된 데이터베이스 또는 잘못된 마이그레이션을 제대로 복구하지 못하는 두 가지 문제를 해결했습니다. b/111504749b/111519144
  • 이제 Room에서 필드를 vars로 선언할 필요가 없도록 데이터 클래스에서 Kotlin의 기본 생성자를 적절히 사용합니다. b/105769985

버전 2.0.0-beta01

2018년 7월 2일

API/동작 변경사항

  • 쿼리가 실행되는 위치를 맞춤설정할 수 있도록 RoomDatabase.Builder.setQueryExecutor()를 추가했습니다.
  • RxJava2 Observable 지원이 추가되었습니다.
  • 생성된 DAO 및 데이터베이스 구현이 최종 마무리되었습니다.

버그 수정

  • '필드의 getter를 찾을 수 없음' 오류에서 클래스/필드 이름이 지정됩니다. b/73334503
  • Room 이전 버전과의 RoomOpenHelper 호환성을 수정했습니다. b/110197391

AndroidX 이전 종속성

Room의 AndroidX 이전 버전의 경우 다음 종속성을 포함합니다.

dependencies {
        def room_version = "1.1.1"

        implementation "android.arch.persistence.room:runtime:$room_version"
        annotationProcessor "android.arch.persistence.room:compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor

        // optional - RxJava support for Room
        implementation "android.arch.persistence.room:rxjava2:$room_version"

        // optional - Guava support for Room, including Optional and ListenableFuture
        implementation "android.arch.persistence.room:guava:$room_version"

        // Test helpers
        testImplementation "android.arch.persistence.room:testing:$room_version"
    }
    

버전 1.1.1

2018년 6월 19일

Room 1.1.1은 Room 1.1.1-rc1과 동일합니다.

버전 1.1.1-rc1

2018년 5월 16일 마이그레이션을 사용 중인 경우 Room 1.1.0 대신 1.1.1-rc1을 사용하는 것이 좋습니다.

Room에서 마이그레이션 후 초기화를 제대로 처리하지 못하는 버그를 수정했습니다. b/79362399

버전 1.1.0-beta3

2018년 4월 19일

버그 수정

  • Kotlin POJO에서 자바에 정의된 관계 항목을 참조할 때 발생하는 컴파일 오류를 수정했습니다. b/78199923

버전 1.1.0-beta2

2018년 4월 5일

버그 수정

  • 예정보다 빨리 쿼리를 재활용하면 반환된 Single 또는 Maybe 인스턴스에 관찰자를 둘 이상 추가하는 경우 문제를 일으키는 Room의 Rx SingleMaybe 구현의 중대한 버그를 수정했습니다. b/76031240

  • [RoomDatabase.clearAllTables][ref-clearAllTables]가 트랜잭션 내에서 호출되면 데이터베이스를 VACUUM하지 않게 됩니다. b/77235565

버전 1.1.0-beta1

2018년 3월 21일

API 변경사항

  • API 검토 의견에 따라 @RawQuery에서 더 이상 쿼리 매개변수로 String 전달을 허용하지 않습니다. [SupportSQLiteQuery][ref-SupportSQLiteQuery]를 사용해야 합니다(인수 지원으로 [SupportSQLiteQuery][ref-SupportSQLiteQuery]의 인스턴스를 쉽게 만들려면 [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] 참조).
  • RoomDatabase.Builder의 [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] 메서드에서 이제 vararg Integer 대신 vararg int를 받습니다.

버그 수정

  • 이제 [RoomDatabase.clearAllTables][ref-clearAllTables]에서 WAL 체크포인트를 설정하고 데이터베이스를 VACUUM하여 운영체제에 공간을 다시 반환하려고 시도합니다.
  • 이제 [@RawQuery][ref-RawQuery]에서 Pojo가 Embedded 필드나 Relation을 통해 하나 이상의 항목을 참조하는 한 observedEntities 속성에 Pojo를 허용합니다. b/74041772
  • Paging: Room의 DataSource 구현에서 이제 다중 테이블 종속성(예: 관계, 조인)을 올바로 처리합니다. 이전에는 새로운 결과를 트리거하지 못하거나 컴파일하지 못했습니다. b/74128314

버전 1.1.0-alpha1

2018년 1월 22일

새로운 기능

  • RawQuery: 이 새로운 API를 사용하면 @Dao 메서드가 SQL을 쿼리 매개변수로 받을 수 있습니다. b/62103290, b/71458963
  • fallBackToDestructiveMigrationsFrom: RoomDatabase.Builder의 이 새로운 API를 사용하면 fallbackToDestructiveMigration과 비교하여 파괴적인 마이그레이션이 허용되는 스키마 버전부터 세밀하게 제어할 수 있습니다. b/64989640
  • Room에서는 이제 최신 Paging API(alpha-4+)만 지원하고, 사용되지 않는 LivePagedListProvider의 지원을 중단합니다. 새로운 Room 알파를 사용하려면 Paging alpha-4 이상을 사용하고, 아직 전환하지 않은 경우 LivePagedListProvider에서 LivePagedListBuilder로 전환해야 합니다.

버그 수정

  • Kotlin Kapt 유형의 지원이 향상되었습니다. b/69164099
  • 필드 순서가 더 이상 스키마를 무효화하지 않습니다. b/64290754