Room

Library persistensi Room memberikan lapisan abstraksi pada SQLite untuk memungkinkan akses database yang lebih stabil sambil memanfaatkan kemampuan penuh SQLite.
Update Terbaru Rilis Stabil Saat Ini Kandidat Rilis Berikutnya Rilis Beta Rilis Alfa
5 Mei 2021 2.3.0 - - 2.4.0-alpha02

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada Room, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk informasi selengkapnya.

Dependensi untuk Room mencakup pengujian migrasi Room dan Room RxJava

Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:

Groovy

dependencies {
    def room_version = "2.3.0"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"

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

    // optional - RxJava3 support for Room
    implementation "androidx.room:room-rxjava3:$room_version"

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

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

Kotlin

dependencies {
    def room_version = "2.3.0"

    implementation("androidx.room:room-runtime:$room_version")
    annotationProcessor "androidx.room:room-compiler:$room_version"

    // To use Kotlin annotation processing tool (kapt)
    kapt("androidx.room:room-compiler:$room_version")
    // To use Kotlin Symbolic Processing (KSP)
    ksp("androidx.room:room-compiler:$room_version")

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

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

    // optional - RxJava3 support for Room
    implementation "androidx.room:room-rxjava3:$room_version"

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

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

Untuk mengetahui cara menggunakan ekstensi Kotlin, lihat dokumentasi ktx.

Untuk informasi selengkapnya tentang dependensi, lihat Menambahkan Dependensi Build.

Mengonfigurasi Opsi Compiler

Room memiliki opsi pemroses anotasi berikut:

  • room.schemaLocation: Mengonfigurasi dan mengaktifkan ekspor skema database ke dalam file JSON di direktori yang ditentukan. Lihat Migrasi Room untuk informasi selengkapnya.
  • room.incremental: Mengaktifkan pemroses anotasi inkremental Gradle.
  • room.expandProjection: Mengonfigurasi Room untuk menulis ulang kueri sedemikian rupa sehingga proyeksi bintang teratasnya diperluas menjadi hanya berisi kolom yang ditentukan dalam jenis nilai yang ditampilkan metode DAO.

Contoh cara mengonfigurasi opsi ini ditampilkan dalam cuplikan kode berikut:

Groovy

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

Kotlin

android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += mapOf(
                    "room.schemaLocation" to "$projectDir/schemas",
                    "room.incremental" to "true",
                    "room.expandProjection" to "true"
                )
            }
        }
    }
}

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau punya masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara pada masalah yang ada dengan mengklik tombol bintang.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 2.4.0

Versi 2.4.0-alpha02

5 Mei 2021

androidx.room:room-*:2.4.0-alpha02 dirilis. Versi 2.4.0-alpha02 berisi commit berikut.

Perubahan API

  • @ProvidedAutoMigrationSpec adalah API baru untuk mendeklarasikan bahwa AutoMigrationSpec akan disediakan pada runtime melalui RoomDatabase.Builder#addAutoMigrationSpec(). Hal ini memungkinkan framework injeksi dependensi untuk memberikan spesifikasi tersebut saat memerlukan dependensi yang kompleks.

Perbaikan Bug

  • Memperbaiki masalah migrasi otomatis saat @DatabaseView tidak dibuat ulang dengan benar.

Kontribusi Eksternal

  • Memperbaiki masalah di JournalMode.TRUNCATE Room saat callback InvalidationTracker terkadang dipanggil secara tidak valid, terlambat, atau tidak ada sama sekali. Berkat Uli Bubenheimer | bubenheimer@users.noreply.github.com (b/154040286)

Versi 2.4.0-alpha01

21 April 2021

androidx.room:room-*:2.4.0-alpha01 dirilis. Versi 2.4.0-alpha01 berisi commit berikut.

Fitur Baru

  • Migrasi Otomatis: Room kini menawarkan API untuk otomatis melakukan migrasi selama skema diekspor. Untuk memberi tahu Room bahwa Room harus melakukan migrasi otomatis, properti @Database#autoMigrations baru dapat digunakan untuk mendeklarasikan dari dan ke versi apa migrasi otomatis akan dilakukan. Jika Room memerlukan informasi tambahan terkait penggantian nama atau penghapusan tabel dan kolom, anotasi @AutoMigration akan dapat mendeklarasikan class spesifikasi yang berisi input tersebut. Lihat dokumentasi @AutoMigration untuk detail selengkapnya.

Perbaikan Bug

  • Memperbaiki masalah saat defaultValue dengan tanda kurung tambahan salah divalidasi oleh validasi skema Room. b/182284899

Versi 2.3.0

Versi 2.3.0

21 April 2021

androidx.room:room-*:2.3.0 dirilis. Versi 2.3.0 berisi commit berikut ini.

Perubahan penting sejak versi 2.2.0

  • Dukungan Enum Bawaan: Room kini akan ditetapkan secara default untuk menggunakan pengonversi jenis Enum ke String dan sebaliknya, jika tidak ada yang disediakan. Jika pengonversi jenis untuk enum sudah ada, Room akan memprioritaskan penggunaannya daripada pengonversi default.
  • Callback Kueri: Room kini menawarkan Callback API umum RoomDatabase.QueryCallback, untuk saat kueri akan dijalankan, yang dapat berguna untuk logging di build debug. Callback dapat disetel melalui RoomDatabase.Builder#setQueryCallback().
  • Peningkatan dalam Bentuk Paket: Room kini memiliki API untuk membuat database menggunakan database dalam bentuk paket yang dibaca dari stream input. Hal ini memungkinkan terjadinya kasus seperti saat database dalam bentuk paket dikompresi ke format gzip.
  • Pengonversi Jenis yang Disediakan: Room kini memiliki API untuk menyediakan instance pengonversi jenis sehingga aplikasi dapat mengontrol inisialisasinya. Untuk menandai pengonversi jenis yang akan disediakan ke Room, gunakan anotasi baru @ProvidedTypeConverter.
  • Dukungan RxJava3: Room kini mendukung jenis RxJava3. Serupa dengan RxJava2, Anda dapat mendeklarasikan metode DAO yang jenis nilai yang ditampilkannya adalah Flowable, Single, Maybe, dan Completable. Selain itu, artefak baru androidx.room:room-rxjava3 juga tersedia untuk mendukung RxJava3.
  • Dukungan Paging 3.0: Room kini akan mendukung pembuatan implementasi untuk metode @Query yang dianotasi yang jenis nilai yang ditampilkannya adalah androidx.paging.PagingSource.

Versi 2.3.0-rc01

24 Maret 2021

androidx.room:room-*:2.3.0-rc01 dirilis. Versi 2.3.0-rc01 berisi commit berikut.

Perbaikan Bug

  • Memperbaiki masalah yang mencegah kueri Coroutine Flow yang dibuat oleh Room untuk digunakan di blok withTransaction yang ditangguhkan. (I797bf)

Versi 2.3.0-beta03

10 Maret 2021

androidx.room:room-*:2.3.0-beta03 dirilis. Versi 2.3.0-beta03 berisi commit berikut ini.

Fitur Baru

Perbaikan Bug

  • Memperbaiki bug tempat membuat PagingSource di thread utama dapat memicu ANR. (I42b74, b/181221318)
  • Memperbaiki visibilitas @ExperimentalRoomApi menjadi publik, bukan paket pribadi. (b/181356119)

Kontribusi Eksternal

  • Mengizinkan Room untuk menerima jenis nilai POJO yang ditampilkan dalam metode DAO beranotasi @Query saat juga dianotasi dengan @SkipQueryVerification. Room akan melakukan upaya terbaik untuk mengonversi hasil kueri ke jenis pengembalian POJO dengan cara yang sama seperti yang dilakukan untuk metode DAO beranotasi @RawQuery. Terima kasih kepada ‘Markus Riegel | hey@marcorei.com’. (I45acb)

Versi 2.3.0-beta02

18 Februari 2021

androidx.room:room-*:2.3.0-beta02 dirilis. Versi 2.3.0-beta02 berisi commit berikut ini.

Fitur Baru

  • Room sekarang memiliki dukungan eksperimental untuk Pemrosesan Simbol Kotlin (KSP).

    KSP adalah pengganti KAPT untuk menjalankan pemroses anotasi secara native di compiler Kotlin, sehingga mengurangi waktu build secara signifikan.

    Untuk menggunakan Room dengan KSP, Anda dapat menerapkan plugin Gradle KSP dan mengganti konfigurasi kapt di file build Anda dengan ksp. Misalnya, gunakan ksp 'androidx.room:room-compiler:2.3.0-beta02', bukan kapt 'androidx.room:room-compiler:2.3.0-beta02'. Lihat dokumentasi KSP untuk detail selengkapnya.

    Perhatikan bahwa sebaiknya tetap gunakan KAPT untuk kode produksi karena KSP bersifat eksperimental. Pengurangan waktu build hanya berlaku jika tidak ada prosesor lain yang menggunakan KAPT. Lihat b/160322705 untuk masalah umum.

Versi 2.3.0-beta01

27 Januari 2021

androidx.room:room-*:2.3.0-beta01 dirilis. Versi 2.3.0-beta01 berisi commit berikut ini.

Fitur Baru

  • Database yang Ditutup Secara Otomatis: Room kini memiliki kemampuan untuk menutup database yang tidak diakses setelah jangka waktu tertentu. Ini adalah fitur eksperimental yang dapat diaktifkan dengan memanggil RoomDatabase.Builder#setAutoCloseTimeout(). Fitur ini berguna untuk aplikasi dengan beberapa database.

Perbaikan Bug

  • Memperbaiki masalah agar metode Dao dengan beberapa metode @Update atau @Delete yang memiliki strategi konflik yang berbeda akan menghasilkan kode dengan salah satu strategi saja, secara efektif mengabaikan yang satunya. (/I0b90d, b/176138543)

Versi 2.3.0-alpha04

16 Desember 2020

androidx.room:room-*:2.3.0-alpha04 dirilis. Versi 2.3.0-alpha04 berisi commit berikut.

Fitur Baru

  • Room sekarang menawarkan Callback API umum RoomDatabase.QueryCallback, saat kueri akan dijalankan nantinya, yang dapat berguna untuk logging di build debug. Callback dapat disetel melalui RoomDatabase.Builder#setQueryCallback(). (Iaa513, b/174478034, b/74877608)
  • Room sekarang akan ditetapkan secara default untuk menggunakan pengonversi jenis Enum ke String dan sebaliknya, jika tidak ada yang disediakan. Jika pengonversi jenis untuk enum sudah ada, Room akan memprioritaskan penggunaannya daripada pengonversi default. (b/73132006)

Masalah Umum

  • Jika pengonversi jenis satu arah untuk pembacaan sudah ada untuk Enum, Room mungkin tidak sengaja menggunakan pengonversi String ke Enum bawaan yang mungkin tidak diinginkan. Ini adalah masalah umum dan dapat diperbaiki dengan menjadikannya pengonversi dua arah. Lihat b/175707691.

Perbaikan Bug

  • Memperbaiki masalah saat Room akan menonaktifkan pemrosesan anotasi inkremental secara tidak tepat di versi JDK yang lebih baru. (b/171387388)
  • Memperbaiki masalah terkait Room yang menemukan class yang dihasilkan ketika beberapa loader class digunakan. Terima kasih atas perbaikannya ‘Serendipity | 892449346@qq.com’. (b/170141113)
  • Memperbaiki masalah saat Room akan menghasilkan kode yang salah ketika Kotlin @Dao memiliki class dasar yang generiknya adalah primitif di JVM. (b/160258066)

Kontribusi Eksternal

  • Room sekarang akan menggunakan beginTransactionNonExclusive secara default jika mode WAL diaktifkan dan API adalah 16 atau lebih. Terima kasih kepada ‘Ahmed I. Khalil | ahmedibrahimkhali@gmail.com’. (b/126258791)

Versi 2.3.0-alpha03

14 Oktober 2020

androidx.room:room-*:2.3.0-alpha03 dirilis. Versi 2.3.0-alpha03 berisi commit berikut.

Fitur Baru

  • Room kini memiliki API untuk menyediakan instance pengonversi jenis sehingga aplikasi dapat mengontrol inisialisasinya. Untuk menandai pengonversi jenis yang akan disediakan ke Room, gunakan anotasi baru @ProvidedTypeConverter. Terima kasih kepada ‘mzgreen yairobbe@gmail.com’. (Ie4fa5, b/121067210)

  • Room kini memiliki API untuk membuat database menggunakan database dalam bentuk paket yang dibaca dari stream input. Hal ini memungkinkan terjadinya kasus seperti saat database dalam bentuk paket dikompresi ke format gzip. Terima kasih kepada ‘Ahmed El-Helw ahmedre@gmail.com’ (3e6792, b/146911060)

Perubahan API

  • Menambahkan target yang hilang ke anotasi @ForeignKey untuk mencegah penggunaannya di luar anotasi @Entity. (Iced1e)

  • Kolom mCallbacks di RoomDatabase.java kini disembunyikan. (d576cb, b/76109329)

Perbaikan Bug

  • Memperbarui dokumentasi TypeConverters untuk memperjelas bahwa TypeConverters hanya dapat digunakan untuk mengonversi kolom, bukan baris. (I07c56, b/77307836)

  • Mengupdate DaoProcessor untuk memperbaiki error compiler di Dao menggunakan jenis super generik dengan Kotlin "primitive". (Ice6bb, b/160258066)

  • Memperbarui dokumentasi metode observer add/remove untuk memperjelas threading (Ifd1d9, b/153948821)

  • Memperbaiki masalah pada Room yang salah memvalidasi tabel FTS yang mendeklarasikan kolom rowid-nya. (d62ebc, b/145858914)

Kontribusi Eksternal

  • Memperbaiki masalah lokal huruf besar/kecil terkait bahasa Turki (5746e3), b/68159494

  • Mengganti ConcurrentHashMap di RoomDatabase dengan Collections.synchronizedMap() untuk menghindari masalah di Android Lollipop (d1cfc7, b/162431855)

  • Menambahkan callback onOpenPrepackagedDatabase saat DB dalam bentuk paket disalin. (I1ba74, b/148934423)

Versi 2.3.0-alpha02

22 Juli 2020

androidx.room:room-*:2.3.0-alpha02 dirilis. Versi 2.3.0-alpha02 berisi commit berikut.

Fitur Baru

  • Dukungan RxJava3: Room kini mendukung jenis RxJava3. Serupa dengan RxJava2, Anda dapat mendeklarasikan metode DAO yang jenis nilai yang ditampilkannya adalah Flowable, Single, Maybe, dan Completable. Selain itu, artefak baru androidx.room:room-rxjava3 juga tersedia untuk mendukung RxJava3. (b/152427884)

Perubahan API

  • Mendeklarasikan @TypeConverter di class Objek Kotlin kini didukung. (b/151110764)
  • Opsi pemrosesan anotasi inkremental Room kini AKTIF secara default. (b/112110217)

Versi 2.3.0-alpha01

10 Juni 2020

androidx.room:room-*:2.3.0-alpha01 dirilis. Versi 2.3.0-alpha01 berisi commit berikut.

Fitur Baru

  • Dukungan Paging 3.0: Room kini akan mendukung pembuatan implementasi untuk metode @Query yang dianotasi yang jenis nilai yang ditampilkannya adalah androidx.paging.PagingSource.

    @Dao
    interface UserDao {
      @Query("SELECT * FROM users ORDER BY id ASC")
      fun pagingSource(): PagingSource<Int, User>
    }
    

Perubahan API

  • @RemoveUnusedColumns adalah anotasi praktis baru yang membuat Room menulis ulang proyeksi '*' dalam sebuah kueri sehingga kolom yang tidak digunakan dalam hasil dihapus.
  • Opsi pemroses room.expandProjection kini tidak digunakan lagi. Gunakan @RemoveUnusedColumns sebagai pengganti untuk kueri pengoptimalan Room dengan proyeksi bintang. Perhatikan bahwa @RemoveUnusedColumn tidak menggantikan solusi konflik kolom room.expandProjection yang ditawarkan terkait dengan jenis nilai yang ditampilkan yang berisi kolom @Embedded.

Perbaikan Bug

  • Memperbaiki bug ketika Room tidak mendeteksi versi JDK dengan benar yang digunakan untuk mengaktifkan pemroses anotasi inkremental. Terima kasih kepada Blaz Solar (me@blaz.solar) (b/155215201)
  • Room kini menyematkan dependensi ANTLR-nya dengan pemroses anotasi untuk menghindari konflik versi dengan pemroses lain yang juga menggunakan ANTLR. (b/150106190)

Versi 2.2.6

Versi 2.2.6

16 Desember 2020

androidx.room:room-*:2.2.6 dirilis. Versi 2.2.6 berisi commit berikut ini.

Perbaikan Bug

  • Memperbaiki masalah saat Room akan menonaktifkan pemrosesan anotasi inkremental secara tidak tepat di versi JDK yang lebih baru. (b/171387388)

Versi 2.2.5

Versi 2.2.5

18 Maret 2020

androidx.room:room-*:2.2.5 dirilis. Versi 2.2.5 berisi commit berikut.

Perbaikan Bug

  • Menjadikan MultiInstanceInvalidationService directBootAware. Terima kasih ‘Mygod contact-git@mygod.be’ (b/148240967)
  • Memperbaiki bug yang akan menyebabkan error saat pembatalan multi-instance diaktifkan dan database berisi entity FTS. (b/148969394)
  • Memperbaiki masalah saat memuat library native SQLite di pemroses anotasi Room yang akan menyebabkan compiler error karena kompilasi paralel. (b/146217083)

Versi 2.2.4

Versi 2.2.4

19 Februari 2020

androidx.room:room-common:2.2.4, androidx.room:room-compiler:2.2.4, androidx.room:room-guava:2.2.4, androidx.room:room-ktx:2.2.4, androidx.room:room-migration:2.2.4, androidx.room:room-runtime:2.2.4, androidx.room:room-rxjava2:2.2.4, dan androidx.room:room-testing:2.2.4 dirilis. Versi 2.2.4 berisi commit berikut.

Perbaikan Bug

  • Memperbaiki masalah terkait penangguhan transaksi yang akan mengalami deadlock jika coroutine dibatalkan dengan cepat sebelum transaksi benar-benar dimulai. (b/148181325)
  • Memperbaiki masalah terkait @Generated yang digunakan dengan tidak benar saat membuat aplikasi dengan JDK 9. (b/146538330)
  • Memperbaiki masalah saat Room menghasilkan kode yang salah bila antarmuka DAO di Kotlin memiliki fungsi konkret. (b/146825845)

Versi 2.2.3

Versi 2.2.3

18 Desember 2019

androidx.room:room-*:2.2.3 dirilis. Versi 2.2.3 berisi commit berikut.

Perbaikan bug

  • Memperbaiki bug saat Room gagal memvalidasi database yang tidak melalui migrasi dan berisi hash lama dengan indeks dalam skemanya. (b/139306173)

Versi 2.2.2

Versi 2.2.2

20 November 2019

androidx.room:room-*:2.2.2 dirilis. Versi 2.2.2 berisi commit berikut ini.

Perbaikan bug

  • Memperbaiki bug saat mengumpulkan hubungan one-to-one dengan lebih dari 999 baris akan menyebabkan Room menampilkan item terkait null. (b/143105450)

Versi 2.2.1

Versi 2.2.1

23 Oktober 2019

androidx.room:room-*:2.2.1 dirilis. Versi 2.2.1 berisi commit berikut.

Perbaikan bug

  • Memperbaiki bug saat Room salah memperingatkan tentang CURSOR_MISMATCH dengan opsi compiler expandProjection AKTIF. (b/140759491)
  • Menambahkan mekanisme coba lagi untuk menangani library native yang hilang, yang digunakan untuk memverifikasi kueri selama waktu kompilasi.

Versi 2.2.0

Versi 2.2.0

9 Oktober 2019

androidx.room:room-*:2.2.0 dirilis. Versi 2.2.0 berisi commit berikut ini.

Perubahan penting sejak versi 2.1.0

  • Database dalam Bentuk Paket : Dua API baru di RoomDatabase.Builder sekarang tersedia untuk membuat RoomDatabase mengingat file database sudah terisi. createFromAsset() digunakan jika file database yang sudah terisi terdapat di dalam folder aset APK, sedangkan createFromFile() digunakan jika file ini berada di sembarang lokasi. Penggunaan API ini mengubah perilaku migrasi destruktif sedemikian rupa sehingga selama migrasi fallback, Room akan mencoba menyalin ulang database yang terisi sebelumnya, jika tersedia. Jika tidak, Room akan melakukan fallback dengan menghilangkan dan membuat ulang semua tabel. b/62185732
  • Nilai Default Skema: @ColumnInfo sekarang memiliki properti baru defaultValue yang dapat digunakan untuk menentukan nilai default sebuah kolom. Nilai default adalah bagian dari skema database dan akan divalidasi selama migrasi, jika ditetapkan. b/64088772
  • Relasi Many-to-Many: @Relation sekarang memiliki properti baru associateBy, yang menerima anotasi baru @Junction, yang digunakan untuk mendeklarasikan relasi yang perlu dipenuhi melalui tabel junction (disebut juga tabel join). b/69201917
  • Relasi One-to-One: Pembatasan pada kolom POJO yang dianotasikan dengan @Relation agar menjadi jenis List atau Set telah dicabut, sehingga memungkinkan representasi relasi nilai tunggal. b/62905145
  • Entity Target: Anotasi DAO @Insert, @Update, dan @Delete sekarang memiliki properti baru targetEntity, yang memungkinkan penentuan tabel target yang dimaksudkan untuk ditindaklanjuti dengan metode DAO. Hal ini memungkinkan parameter metode DAO untuk menjadi POJO arbitrer yang akan ditafsirkan sebagai entity parsial. Dalam praktiknya, hal ini memungkinkan penyisipan, penghapusan, dan update parsial. b/127549506
  • Coroutine Flow: Metode DAO @Query kini dapat berupa jenis nilai yang ditampilkan Flow<T>. Flow yang ditampilkan akan memunculkan ulang kumpulan nilai baru jika tabel pengamatan dalam kueri dinyatakan tidak valid. Mendeklarasikan fungsi DAO dengan jenis nilai yang ditampilkan Channel<T> merupakan sebuah kesalahan. Room mendorong Anda untuk menggunakan Flow, lalu menggunakan fungsi di dekatnya untuk mengonversi Flow menjadi Channel. b/130428884
  • Pemroses Anotasi Inkremental Gradle: Room sekarang menjadi pemroses anotasi yang mengisolasi Gradle dan inkrementabilitas dapat diaktifkan melalui opsi pemroses room.incremental. Lihat Opsi Compiler Room untuk informasi selengkapnya. Jika Anda mengalami masalah, harap laporkan sebagai bug di sini. Kami berencana untuk mengaktifkan inkrementabilitas secara default pada versi stabil di waktu mendatang. b/112110217
  • Memperluas Proyeksi : Opsi compiler eksperimental baru room.expandProjection ditambahkan yang menyebabkan Room menulis ulang kueri dengan proyeksi bintang agar hanya memuat kolom dalam jenis nilai yang ditampilkan POJO. Misalnya, untuk metode DAO dengan @Query("SELECT * FROM Song") yang menampilkan POJO bernama SongIdAndTitle yang hanya terdiri dari dua kolom. Kemudian, Room akan menulis ulang kueri tersebut ke SELECT id, title FROM Song sedemikian rupa sehingga kumpulan minimum kolom yang sesuai dengan jenis nilai yang ditampilkan akan diambil. Hal ini pada dasarnya menghilangkan peringatan CURSOR_MISMATCH yang ditampilkan saat kueri menampilkan kolom tambahan yang tidak cocok dengan kolom apa pun dalam jenis POJO yang ditampilkan.

Versi 2.2.0-rc01

5 September 2019

androidx.room:room:2.2.0-rc01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Tidak ada perubahan publik sejak Room 2.2.0-beta01.

Versi 2.2.0-beta01

22 Agustus 2019

androidx.room:room-*:2.2.0-beta01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Perbaikan bug

  • Memperbaiki bug saat kueri Coroutine Flow berhenti memunculkan kembali nilai baru setelah waktu tertentu. (b/139175786)
  • Memperbaiki bug saat Room tidak menerima kode hash skema lama ketika membuka database yang tidak melakukan migrasi sejak Room 1.0, sehingga terjadi error runtime akibat skema yang tidak valid. (b/139306173)

Versi 2.2.0-alpha02

7 Agustus 2019

androidx.room:room-*:2.2.0-alpha02 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Fitur Baru

  • Coroutine Flow: Metode DAO @Query kini dapat berupa jenis nilai yang ditampilkan Flow<T>. Flow yang ditampilkan akan memunculkan ulang kumpulan nilai baru jika tabel pengamatan dalam kueri dinyatakan tidak valid. Mendeklarasikan fungsi DAO dengan jenis nilai yang ditampilkan Channel<T> merupakan sebuah kesalahan. Room mendorong Anda untuk menggunakan Flow, lalu menggunakan fungsi di dekatnya untuk mengonversi Flow menjadi Channel. b/130428884
  • Memperluas Proyeksi : Opsi compiler eksperimental baru room.expandProjection ditambahkan yang menyebabkan Room menulis ulang kueri dengan proyeksi bintang agar hanya memuat kolom dalam jenis nilai yang ditampilkan POJO. Misalnya, untuk metode DAO dengan @Query("SELECT * FROM Song") yang menampilkan POJO bernama SongIdAndTitle yang hanya terdiri dari dua kolom. Kemudian, Room akan menulis ulang kueri tersebut ke SELECT id, title FROM Song sedemikian rupa sehingga kumpulan minimum kolom yang sesuai dengan jenis nilai yang ditampilkan akan diambil. Hal ini pada dasarnya menghilangkan peringatan CURSOR_MISMATCH yang ditampilkan saat kueri menampilkan kolom tambahan yang tidak cocok dengan kolom apa pun dalam jenis POJO yang ditampilkan.
  • onDestructiveMigrate adalah callback API baru yang ditambahkan ke RoomDatabase.Callback saat Room memigrasikan database secara destruktif. b/79962330

Perbaikan Bug

  • Memperbaiki bug saat Room menghasilkan kode yang salah menggunakan metode sebagai penyetel kolom ketika kolom dilindungi. b/136194628
  • Memperbaiki bug yang menyebabkan InvalidationTracker memunculkan NPE dalam proses kedua saat pembatalan multi-instance diaktifkan dan Layanan pembatalan dimatikan. b/137454915
  • Memperbaiki bug saat Room tidak mengidentifikasi dengan benar jenis nilai yang ditampilkan dari fungsi penangguhan turunan yang dianotasikan dengan @RawQuery. b/137878827
  • Memperbarui kode yang dihasilkan untuk @Relation saat kunci penghubung berjenis BLOB untuk menggunakan ByteBuffer yang sebanding. b/137881998
  • Memperbaiki bug di mana Room melaporkan penyetel yang hilang di POJO yang digunakan sebagai parameter entity parsial untuk @Insert, @Update, dan @Delete. b/138664463
  • Memperbaiki bug saat Room melaporkan penyetel & pengambil yang hilang untuk kolom yang diabaikan melalui @Entity saat class entity tersebut digunakan dalam metode DAO tertentu. b/138238182
  • Memperbaiki bug saat Room tidak mengonversi dengan benar argumen binding bernama menjadi argumen posisi, sehingga terjadi pengecualian runtime saat kueri dijalankan dengan parameter yang digunakan ulang. b/137254857

Versi 2.2.0-alpha01

10 Juli 2019

Fitur Baru

  • Database dalam Bentuk Paket : Dua API baru di RoomDatabase.Builder sekarang tersedia untuk membuat RoomDatabase mengingat file database sudah terisi. createFromAsset() digunakan jika file database yang sudah terisi terdapat di dalam folder aset APK, sedangkan createFromFile() digunakan jika file ini berada di sembarang lokasi. Penggunaan API ini mengubah perilaku migrasi destruktif sedemikian rupa sehingga selama migrasi fallback, Room akan mencoba menyalin ulang database yang terisi sebelumnya, jika tersedia. Jika tidak, Room akan melakukan fallback dengan menghilangkan dan membuat ulang semua tabel. b/62185732
  • Nilai Default Skema: @ColumnInfo sekarang memiliki properti baru defaultValue yang dapat digunakan untuk menentukan nilai default sebuah kolom. Nilai default adalah bagian dari skema database dan akan divalidasi selama migrasi, jika ditetapkan. b/64088772

    Catatan: Jika skema database Anda sudah memiliki nilai default, seperti yang ditambahkan melalui ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z, dan Anda memutuskan untuk menentukan nilai default melalui @ColumnInfo ke kolom yang sama, maka Anda mungkin perlu menyediakan migrasi untuk memvalidasi nilai default yang tidak diperhitungkan. Lihat Migrasi Room untuk informasi selengkapnya.

  • Relasi Many-to-Many: @Relation sekarang memiliki properti baru associateBy, yang menerima anotasi baru @Junction, yang digunakan untuk mendeklarasikan relasi yang perlu dipenuhi melalui tabel junction (disebut juga tabel join). b/69201917
  • Relasi One-to-One: Pembatasan pada kolom POJO yang dianotasikan dengan @Relation agar menjadi jenis List atau Set telah dicabut, sehingga memungkinkan representasi relasi nilai tunggal. b/62905145
  • Entity Target: Anotasi DAO @Insert, @Update, dan @Delete sekarang memiliki properti baru targetEntity, yang memungkinkan penentuan tabel target yang dimaksudkan untuk ditindaklanjuti dengan metode DAO. Hal ini memungkinkan parameter metode DAO untuk menjadi POJO arbitrer yang akan ditafsirkan sebagai entity parsial. Dalam praktiknya, hal ini memungkinkan penyisipan, penghapusan, dan update parsial. b/127549506
  • Pemroses Anotasi Inkremental Gradle: Room sekarang menjadi pemroses anotasi yang mengisolasi Gradle dan inkrementabilitas dapat diaktifkan melalui opsi pemroses room.incremental. Lihat Opsi Compiler Room untuk informasi selengkapnya. Jika Anda mengalami masalah, harap laporkan sebagai bug di sini. Kami berencana untuk mengaktifkan inkrementabilitas secara default pada versi stabil di waktu mendatang. b/112110217

Perbaikan Bug

  • Room tidak lagi menyebarkan EmptySetResultException ke pengendali error global saat aliran Rx dari suatu kueri telah dibuang sebelum kueri tersebut selesai. b/130257475
  • Memperbaiki bug saat Room menampilkan pesan error yang salah saat fungsi DAO penangguhan yang dianotasikan dengan @RawQuery tidak memiliki jenis nilai yang ditampilkan. b/134303897
  • Room tidak akan lagi menghasilkan adapter DAO dengan jenis mentah. b/135747255

Versi 2.1.0

Versi 2.1.0

13 Juni 2019

Room 2.1.0 dirilis tanpa perubahan dari versi 2.1.0-rc01. Commit yang disertakan dalam versi tersebut dapat dilihat di sini.

Perubahan penting sejak 2.0.0

  • FTS: Room sekarang mendukung entity dengan tabel pemetaan FTS3 atau FTS4 . Class yang dianotasikan dengan @Entity sekarang juga dapat dianotasikan dengan @Fts3 atau @Fts4 untuk mendeklarasikan class dengan tabel penelusuran teks lengkap pemetaan. Opsi FTS untuk penyesuaian lebih lanjut tersedia melalui metode anotasi.
  • View: Sekarang Room mendukung deklarasi class sebagai kueri tersimpan, yang disebut juga view, menggunakan anotasi @DatabaseView.
  • Couroutine: Metode DAO sekarang dapat berupa fungsi penangguhan. Sertakan room-ktx dalam dependensi Anda untuk memanfaatkan fungsionalitas ini. Artefak ktx juga menyediakan fungsi ekstensi RoomDatabase.withTransaction untuk melakukan transaksi database dalam coroutine.
  • Nilai Otomatis: Room sekarang mendukung deklarasi class beranotasi AutoValue sebagai entity dan POJO. Anotasi Room @PrimaryKey, @ColumnInfo, @Embedded, dan @Relation sekarang dapat dideklarasikan dalam metode abstrak milik class beranotasi nilai otomatis. Perhatikan bahwa anotasi ini juga harus disertai dengan @CopyAnnotations agar Room dapat memahaminya dengan baik.
  • Dukungan Asinkron Tambahan: Metode DAO yang dianotasikan dengan @Insert, @Delete, atau @Update, beserta @Query yang berisi pernyataan INSERT, DELETE, atau UPDATE, sekarang mendukung jenis nilai yang ditampilkan Rx Completable, Single, dan Maybe, serta jenis nilai yang ditampilkan Guava ListenableFuture, dan semuanya juga dapat menjadi fungsi penangguhan.
  • enableMultiInstanceInvalidation adalah API baru di RoomDatabase.Builder untuk mengaktifkan pembatalan di berbagai instance RoomDatabase yang menggunakan file database yang sama.
  • fallbackToDestructiveMigrationOnDowngrade adalah API baru di RoomDatabase.Builder untuk otomatis membuat ulang database jika downgrade terjadi.
  • ignoredColumns adalah API baru dalam anotasi @Entity yang dapat digunakan untuk membuat daftar kolom yang diabaikan menurut namanya.
  • Sekarang Room akan menggunakan konstruktor utama Kotlin dalam class data dengan benar, sehingga tidak perlu lagi untuk mendeklarasikan properti sebagai vars.

Versi 2.1.0-rc01

29 Mei 2019

Perbaikan Bug

  • Memperbaiki error inisialisasi Room yang mungkin terjadi akibat konfigurasi temp_store yang sudah disiapkan. b/132602198
  • Memperbaiki peringatan penggunaan tanda petik ganda bagi pengguna yang menggunakan SQLite 3.27.0 dan yang lebih baru. b/131712640
  • Memperbaiki bug saat InvalidationTracker akan menyebabkan error bila beberapa pemeriksaan pembatalan terjadi secara paralel. b/133457594

Versi 2.1.0-beta01

7 Mei 2019

androidx.room 2.1.0-beta01 dirilis tanpa perubahan dari versi 2.1.0-alpha07. Commit yang disertakan dalam versi ini dapat dilihat di sini.

Versi 2.1.0-alpha07

25 April 2019

Perubahan API/Perilaku

  • Fungsi ekstensi RoomDatabase.withTransaction telah diubah agar tidak lagi mengambil blok fungsi yang menggunakan CoroutineScope sebagai penerima. Perubahan ini mencegah dilewatkannya wrapper coroutineScope { } tambahan yang diperlukan untuk menjalankan berbagai hal dalam blok transaksi secara serentak.

Perbaikan Bug

  • Memperbaiki bug saat Room gagal mencocokkan TypeConverter untuk fungsi DAO Kotlin yang berisi parameter jenis Collection. b/122066791

Versi 2.1.0-alpha06

22 Maret 2019

Perubahan API/Perilaku

  • Kueri transaksi asinkron sekarang diserialisasi sedemikian rupa sehingga Room tidak akan menggunakan lebih dari satu thread untuk menjalankan transaksi database. RoomDatabase.Builder.setTransactionExecutor(Executor) ditambahkan untuk memungkinkan pengonfigurasian eksekutor yang akan digunakan dalam transaksi.
  • RoomDatabase.runInTransaction(Callable) tidak akan lagi menggabung pengecualian yang sudah diperiksa ke dalam RuntimeExceptions. b/128623748

Perbaikan Bug

  • Memperbaiki bug saat pelacak pembatalan berhenti mengamati tabel konten jika observer untuk tabel konten dan juga tabel FTS konten eksternal ditambahkan. b/128508917
  • Memperbarui tata bahasa SQLite Room agar sesuai dengan SQLite 3.24.0. b/110883668

Versi 2.1.0-alpha05

13 Maret 2019

Fitur Baru

  • Fungsi ekstensi RoomDatabase.withTransaction memungkinkan Anda melakukan transaksi database dengan aman di dalam coroutine. Fungsi ekstensi Room beserta dukungan coroutine tersedia dalam artefak room-ktx.
  • Metode DAO non-abstrak yang dianotasi dengan @Transaction sekarang dapat menjadi fungsi penangguhan. b/120241587

Perubahan API/Perilaku

  • Artefak room-coroutines diubah namanya menjadi room-ktx mengikuti penamaan yang sama dengan artefak androidx lainnya.
  • beginTransaction, setTransactionSuccessful, dan endTransaction di RoomDatabase tidak digunakan lagi dan digantikan dengan runInTransaction serta fungsi ekstensi room-ktx withTransaction.

Perbaikan Bug

  • Memperbaiki bug di mana argumen tokenizer dilepas jika tokenizer yang digunakan berformat SEDERHANA. b/125427014
  • Memperbaiki bug saat Room gagal mengidentifikasi fungsi penangguhan dengan parameter yang berjenis class dalam. b/123767877
  • Memperbaiki bug saat metode DAO @Query yang ditangguhkan dengan pernyataan INSERT, UPDATE, atau DELETE mempersiapkan kueri di thread utama. b/123695593
  • Memperbaiki berbagai bug saat Room menghasilkan kode yang salah untuk fungsi penangguhan tertentu. b/123466702 dan b/123457323
  • Memperbaiki bug di mana penggunaan metode yang tidak digunakan lagi tidak disembunyikan dengan benar dalam kode yang dihasilkan. b/117602586
  • Mengupdate dependensi Room androidx.sqlite ke 1.0.2 yang berisi perbaikan untuk penanganan database yang rusak dengan benar. b/124476912

Masalah Umum

  • Room 2.1.0-alpha05 menggunakan artefak kotlinx-metadata-jvm sebagai dependensinya, yang saat ini tidak tersedia di Maven Central (KT-27991). Dependensi ini dapat diatasi dengan menambahkan maven { url "https://kotlin.bintray.com/kotlinx/" } ke repositori project Anda.

Versi 2.1.0-alpha04

25 Januari 2019

Fitur Baru

  • Metode DAO yang dianotasi dengan @Query yang berisi pernyataan INSERT, UPDATE, atau DELETE sekarang dapat menampilkan jenis asinkron seperti Single, Mayble, Completable, dan ListenableFuture. Selain itu, pernyataan tersebut juga dapat berupa fungsi penangguhan. b/120227284

Perubahan API/Perilaku

  • Room sekarang akan memunculkan error jika metode DAO non-abstrak yang dianotasi dengan @Transaction menampilkan jenis asinkron seperti Single, Mayble, Completable, LiveData, atau ListenableFuture. Karena transaksi dibatasi thread, saat ini Room tidak dapat lagi memulai dan mengakhiri transaksi terkait fungsi yang mungkin menjalankan kueri di thread berbeda. b/120109336
  • OnConflictStrategy.FAIL dan OnConflictStrategy.ROLLBACK sudah @Deprecated karena tidak berperilaku sesuai yang diharapkan dengan binding SQLite terbaru Android. b/117266738

Perbaikan Bug

  • Memperbaiki bug di mana Room tidak menggunakan TypeConverter dari jenis kembalian tertentu dengan benar jika metode DAO berupa fungsi penangguhan. b/122988159
  • Memperbaiki bug saat Room salah mengidentifikasi fungsi penangguhan yang diwariskan sebagai bukan penangguhan. b/122902595
  • Memperbaiki bug saat Room menghasilkan kode yang salah ketika kolom @Embedded berada di class induk dan digunakan di beberapa class turunan. b/121099048
  • Memperbaiki masalah saat database menemui deadlock saat memanggil fungsi penangguhan DAO di antara beginTransaction() dan endTransaction(). b/120854786

Versi 2.1.0-alpha03

4 Desember 2018

Perubahan API

  • FTS tokenizer dalam @Fts3/@Fts4 sekarang menggunakan String, bukan Enum. Ini memungkinkan penggunaan tokenizer kustom di Room. Tokenizer bawaan tetap ditentukan di FtsOptions sebagai konstanta string. b/119234881

Fitur Baru

  • Couroutine: Metode DAO sekarang dapat berupa fungsi penangguhan. Untuk mendukung fungsi penangguhan di Room, artefak baru, room-coroutines, dirilis. b/69474692
  • Metode DAO yang dianotasi dengan @Insert, @Delete, atau @Update sekarang mendukung ListenableFuture sebagai jenis nilai yang ditampilkan. b/119418331

Perbaikan Bug

  • Memperbaiki bug saat Room salah mencoba untuk menemukan konstruktor dengan kolom dalam properti ignoredColumns untuk @Entity. b/119830714
  • Memperbaiki bug yang menyebabkan Room tidak menandai parameter metode DAO sebagai final dalam implementasi yang dihasilkan. b/118015483
  • Memperbaiki bug yang menyebabkan prosesor Room tidak bekerja saat melaporkan error pada kueri yang memuat simbol khusus. b/119520136
  • Memperbaiki bug yang menyebabkan Room menolak berbagai implementasi Collection lain sebagai argumen ekspresi IN. b/119884035
  • Memperbaiki bug yang menyebabkan LiveData hasil Room mendapatkan pembersihan sampah memori saat diamati selamanya sehingga tidak lagi memberikan data baru. b/74477406
  • Mengupdate close lock RoomDatabase untuk mengurangi pertentangan kunci. b/117900450

Versi 2.1.0-alpha02

30 Oktober 2018

Fitur Baru

  • Menambahkan dukungan untuk mereferensikan @DatabaseView dalam @Relation. b/117680932

Perbaikan Bug

  • Memperbaiki bug yang menyebabkan Room menjalankan I/O disk di thread utama saat berlangganan dan berhenti langganan jenis pengembalian Rx. b/117201279
  • Memperbaiki bug yang menyebabkan Room gagal menemukan pengonversi jenis yang sesuai untuk kolom dalam class entity Kotlin. b/111404868
  • Memperbaiki bug yang menyebabkan Room menghasilkan kode yang salah untuk implementasi antarmuka DAO yang berisi metode default Kotlin yang tidak memiliki argumen. b/117527454
  • Mengupdate parser tata bahasa SQLite Room, memperbaiki masalah performa yang menyebabkan waktu build lama. b/117401230

Versi 2.1.0-alpha01

8 Oktober 2018

Fitur Baru

  • FTS: Room sekarang mendukung entity dengan tabel pemetaan FTS3 atau FTS4 . Class yang dianotasi dengan @Entity sekarang juga dapat dianotasi dengan @Fts3 atau @Fts4 untuk mendeklarasikan class dengan tabel penelusuran teks lengkap pemetaan. Opsi FTS untuk penyesuaian lebih lanjut tersedia melalui metode anotasi. b/62356416
  • View: Sekarang Room mendukung deklarasi class sebagai kueri tersimpan, yang disebut juga view, menggunakan anotasi @DatabaseView. b/67033276
  • Nilai Otomatis: Room kini mendukung deklarasi class beranotasi AutoValue sebagai entity dan POJO. Anotasi Room @PrimaryKey, @ColumnInfo, @Embedded, dan @Relation sekarang dapat dideklarasikan dalam metode abstrak milik class yang dianotasikan nilai otomatis. Pastikan anotasi ini juga harus disertai dengan @CopyAnnotations agar Room dapat memahaminya dengan baik. b/62408420
  • Dukungan Tambahan untuk Jenis Nilai yang Ditampilkan RX: Metode DAO yang dianotasi dengan @Insert, @Delete, atau @Update sekarang mendukung jenis nilai yang ditampilkan Rx Completable, Single<T>, dan Maybe<T>. b/63317956
  • Jenis yang Tidak Berubah dengan @Relation: Sebelumnya Room memerlukan kolom beranotasi @Relation agar dapat disetel, tetapi sekarang kolom tersebut dapat berupa parameter konstruktor.
  • enableMultiInstanceInvalidation: Adalah API baru di RoomDatabase.Builder untuk mengaktifkan pembatalan di berbagai instance RoomDatabase yang menggunakan file database yang sama. Mekanisme pembatalan multi-instance ini juga berlaku pada banyak proses. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: Adalah API baru di RoomDatabase.Builder untuk otomatis membuat ulang database jika terjadi downgrade. b/110416954
  • ignoredColumns: Adalah API baru dalam anotasi @Entity yang dapat digunakan untuk membuat daftar kolom yang diabaikan menurut namanya. Berguna untuk mengabaikan kolom turunan pada suatu entity. b/63522075

Perubahan API/Perilaku

  • mCallback dan mDatabase di RoomDatabase sekarang @Deprecated dan akan dihapus pada Room versi utama mendatang. b/76109329

Perbaikan Bug

  • Memperbaiki dua masalah saat Room tidak dapat pulih dengan baik dari database yang rusak atau migrasi yang bermasalah selama inisialisasi. b/111504749 dan b/111519144
  • Sekarang Room akan menggunakan dengan tepat konstruktor utama Kotlin dalam class data, sehingga menghindari perlunya mendeklarasikan kolom sebagai vars. b/105769985

Versi 2.0.0

Versi 2.0.0

1 Oktober 2018

androidx.room 2.0.0 dirilis tanpa perubahan dari versi 2.0.0-rc01.

Versi 2.0.0-rc01

20 September 2018

androidx.room 2.0.0-rc01 dirilis tanpa perubahan dari versi 2.0.0-beta01.

Versi 2.0.0-beta01

2 Juli 2018

Perubahan API/Perilaku

  • Menambahkan RoomDatabase.Builder.setQueryExecutor() untuk mengizinkan penyesuaian tempat kueri dijalankan
  • Menambahkan dukungan Observable RxJava2
  • Implementasi DAO dan Database yang dihasilkan sekarang sudah final

Perbaikan Bug

  • Menentukan nama class/kolom di error "tidak dapat menemukan getter untuk kolom" b/73334503
  • Memperbaiki kompatibilitas RoomOpenHelper dengan versi Room yang lebih lama b/110197391

Dependensi pra-AndroidX

Untuk Room versi pra-AndroidX, sertakan dependensi berikut:

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"
}

Versi 1.1.1

Versi 1.1.1

19 Juni 2018

Room versi 1.1.1 sama persis dengan Room versi 1.1.1-rc1.

Versi 1.1.1-rc1

16 Mei 2018 Kami sangat merekomendasikan penggunaan Room versi 1.1.1-rc1 sebagai pengganti versi 1.1.0 jika Anda menggunakan migrasi.

Memperbaiki bug saat Room tidak menangani inisialisasi pasca-migrasi dengan benar b/79362399

Versi 1.1.0

Versi 1.1.0-beta3

19 April 2018

Perbaikan Bug

  • Memperbaiki error kompilasi saat POJO Kotlin mereferensikan entity relasi yang ditentukan di Java b/78199923

Versi 1.1.0-beta2

5 April 2018

Perbaikan Bug

  • Memperbaiki bug penting dalam implementasi Single dan Maybe Rx Room saat kueri didaur ulang lebih awal, sehingga terjadi masalah jika Anda menambahkan lebih dari 1 observer ke instance Single atau Maybe yang ditampilkan. b/76031240

  • [RoomDatabase.clearAllTables][ref-clearAllTables] tidak akan melakukan VACUUM database jika dipanggil di dalam transaksi. b/77235565

Versi 1.1.0-beta1

21 Maret 2018

Perubahan API

  • Berdasarkan masukan Ulasan API, @RawQuery tidak lagi menerima penerusan String sebagai parameter kueri. Anda perlu menggunakan [SupportSQLiteQuery][ref-SupportSQLiteQuery]. (lihat [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] untuk membuat instance [SupportSQLiteQuery][ref-SupportSQLiteQuery] yang menyertakan dukungan argumen).
  • Metode [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] RoomDatabase.Builder sekarang menerima vararg int sebagai pengganti vararg Integer.

Perbaikan Bug

  • [RoomDatabase.clearAllTables][ref-clearAllTables] sekarang mencoba mengembalikan ruang ke sistem operasi dengan menyetel checkpoint WAL dan melakukan VACUUM database.
  • [@RawQuery][ref-RawQuery] sekarang menerima Pojo apa pun untuk properti observedEntities selama Pojo tersebut mereferensikan ke satu atau beberapa entity melalui kolom Embedded atau Relation miliknya. b/74041772
  • Paging: Implementasi DataSource Room sekarang menangani dependensi multi-tabel dengan benar (seperti relasi dan gabungan). Sebelumnya penanganan tersebut akan gagal memicu hasil baru, atau dapat gagal mengompilasi. b/74128314

Versi 1.1.0-alpha1

22 Januari 2018

Fitur Baru

  • RawQuery: API baru ini memungkinkan metode @Dao menerima SQL sebagai parameter kueri b/62103290, b/71458963
  • fallBackToDestructiveMigrationsFrom: API baru di RoomDatabase.Builder ini memberikan kontrol yang lebih terperinci terkait dari versi skema awal mana migrasi destruktif diizinkan (dibandingkan dengan fallbackToDestructiveMigration) b/64989640
  • Room sekarang hanya mendukung Paging API yang lebih baru (alpha-4+), dan melepas dukungan untuk LivePagedListProvider yang tidak digunakan lagi. Untuk menggunakan alfa Room baru, Anda harus menggunakan Paging alpha-4 atau yang lebih tinggi, dan beralih dari LivePagedListProvider ke LivePagedListBuilder jika belum melakukannya.

Perbaikan Bug

  • Peningkatan dukungan untuk jenis Kotlin Kapt. b/69164099
  • Urutan kolom tidak membatalkan skema lagi. b/64290754