Room

Room kalıcılık kitaplığı, SQLite'in tüm gücünden yararlanırken daha sağlam veritabanı erişimi sağlamak için SQLite üzerinde bir soyutlama katmanı sunar.
Son Güncelleme Kararlı sürüm Sürüm Adayı Beta Sürümü Alfa sürümü
16 Temmuz 2025 2.7.2 - - 2.8.0-alpha01

Bağımlılıkları bildirme

Room'a bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.

Room'un bağımlılıkları arasında Room geçişlerini test etme ve Room RxJava yer alır.

Uygulamanız veya modülünüz için build.gradle dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:

Kotlin

dependencies {
    val room_version = "2.7.2"

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

    // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP)
    // See Add the KSP plugin to your project
    ksp("androidx.room:room-compiler:$room_version")

    // If this project only uses Java source, use the Java annotationProcessor
    // No additional plugins are necessary
    annotationProcessor("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")

    // optional - Paging 3 Integration
    implementation("androidx.room:room-paging:$room_version")
}

Groovy

dependencies {
    def room_version = "2.7.2"

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

    // If this project uses any Kotlin source, use Kotlin Symbol Processing (KSP)
    // See KSP Quickstart to add KSP to your build
    ksp "androidx.room:room-compiler:$room_version"

    // If this project only uses Java source, use the Java annotationProcessor
    // No additional plugins are necessary
    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"

    // optional - Paging 3 Integration
    implementation "androidx.room:room-paging:$room_version"
}

KAPT eklentisini kullanma hakkında bilgi edinmek için KAPT belgelerini inceleyin.

KSP eklentisini kullanmayla ilgili bilgi için KSP hızlı başlangıç dokümanlarına bakın.

Kotlin uzantılarını kullanma hakkında bilgi edinmek için ktx belgelerine bakın.

Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme başlıklı makaleyi inceleyin.

İsteğe bağlı olarak, Android olmayan kitaplıklar (ör. yalnızca Java veya Kotlin Gradle modülleri) için Room ek açıklamalarını kullanmak üzere androidx.room:room-common'ya bağlı olabilirsiniz.

Derleyici Seçeneklerini Yapılandırma

Room'da aşağıdaki ek açıklama işleme seçenekleri bulunur.

room.schemaLocation directory
Verilen dizindeki veritabanı şemalarının JSON dosyalarına aktarılmasını sağlar. Daha fazla bilgi için Oda Taşıma İşlemleri başlıklı makaleyi inceleyin.
room.incremental boolean
Gradle artımlı ek açıklama işlemcisini etkinleştirir. Varsayılan değer true'dır.
room.generateKotlin boolean
Java yerine Kotlin kaynak dosyaları oluşturun. KSP gerektirir. 2.7.0 sürümünden itibaren varsayılan değer true'dır. Daha fazla bilgi için 2.6.0 sürümü notlarına göz atın.

Room Gradle eklentisini kullanma

Room 2.6.0 ve sonraki sürümlerde, Room derleyicisi için seçenekleri yapılandırmak üzere Room Gradle eklentisini kullanabilirsiniz. Eklenti, projeyi derleme görevlerinin çıktısı olan ve otomatik taşımalar için kullanılan oluşturulmuş şemaların, yeniden üretilebilir ve önbelleğe alınabilir derlemelere sahip olacak şekilde doğru yapılandırılmasını sağlar.

Eklentiyi eklemek için üst düzey Gradle derleme dosyanızda eklentiyi ve sürümünü tanımlayın.

Groovy

plugins {
    id 'androidx.room' version "$room_version" apply false
}

Kotlin

plugins {
    id("androidx.room") version "$room_version" apply false
}

Modül düzeyindeki Gradle derleme dosyasında eklentiyi uygulayın ve room uzantısını kullanın.

Groovy

plugins {
    id 'androidx.room'
}

android {
    ...
    room {
        schemaDirectory "$projectDir/schemas"
    }
}

Kotlin

plugins {
    id("androidx.room")
}

android {
    ...
    room {
        schemaDirectory("$projectDir/schemas")
    }
}

Room Gradle eklentisi kullanılırken schemaDirectory ayarlanması gerekir. Bu işlem, Room derleyicisini ve çeşitli derleme görevlerini ve arka uçlarını (javac, KAPT, KSP) şema dosyalarını aromalı klasörlere (ör. schemas/flavorOneDebug/com.package.MyDatabase/1.json) çıkacak şekilde yapılandırır. Bu dosyalar, doğrulama ve otomatik taşıma işlemleri için kullanılmak üzere depoya kaydedilmelidir.

Bazı seçenekler, Room derleyicisi tarafından desteklenmelerine rağmen Room Gradle eklentisinin tüm sürümlerinde yapılandırılamaz. Aşağıdaki tabloda her seçenek listelenmekte ve room uzantısı kullanılarak bu seçeneğin yapılandırılmasına destek ekleyen Room Gradle eklentisinin sürümü gösterilmektedir. Sürümünüz daha düşükse veya seçenek henüz desteklenmiyorsa bunun yerine ek açıklama işlemcisi seçeneklerini kullanabilirsiniz.

Option Sürümden itibaren
room.schemaLocation (zorunlu) 2.6.0
room.incremental -
room.generateKotlin -

Ek açıklama işleyicisi seçeneklerini kullanma

Room Gradle eklentisini kullanmıyorsanız veya istediğiniz seçenek eklentinizin sürümü tarafından desteklenmiyorsa Room'u Derleme bağımlılıkları ekleme bölümünde açıklandığı gibi ek açıklama işlemcisi seçeneklerini kullanarak yapılandırabilirsiniz. Açıklama seçeneklerini nasıl belirleyeceğiniz, Room için KSP veya KAPT kullanıp kullanmadığınıza bağlıdır.

Groovy

// For KSP
ksp {
    arg("option_name", "option_value")
    // other otions...
}

// For javac and KAPT
android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += [
                    "option_name":"option_value",
                    // other options...
                    ]
            }
        }
    }
}

Kotlin

// For KSP
ksp {
    arg("option_name", "option_value")
    // other options...
}

// For javac and KAPT
android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += mapOf(
                    "option_name" to "option_value",
                    // other options...
                )
            }
        }
    }
}

room.schemaLocation, temel bir tür değil dizin olduğundan bu seçeneği eklerken CommandLineArgumentsProvider kullanmak gerekir. Böylece Gradle, güncel kontrolleri yaparken bu dizinden haberdar olur. Room veritabanınızı taşıma başlıklı makalede, şema konumunu sağlayan CommandLineArgumentsProvider'ın eksiksiz bir uygulaması gösterilmektedir.

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz olursa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.

Yeni sorun oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.

Sürüm 2.8

Sürüm 2.8.0-alpha01

16 Temmuz 2025

androidx.room:room-*:2.8.0-alpha01 iptal edilir. 2.8.0-alpha01 sürümü bu commit'leri içerir.

Yeni Özellikler

  • SQLiteDriver yapılandırılmış bir RoomDatabase öğesinin SupportSQLiteDatabase sarmalayıcısını almak için API'ler içeren yeni bir androidx.room:room-sqlite-wrapper yapısı eklendi. Sarmalayıcıyı almak için yeni uzantı işlevini RoomDatabase.getSupportWrapper() kullanın. Bu, SupportSQLiteDatabase kullanımını sürdürmek için kullanılan bir uyumluluk yapısıdır. Genellikle RoomDatabase.openHelper.writableDatabase'den alınır. Room veritabanı SQLiteDriver ile yapılandırılmış olsa bile bu yapı kullanılabilir. Bu sarmalayıcı, SQLiteDriver'yı kullanmak isteyen ancak SupportSQLite API'lerini yoğun bir şekilde kullanan ve yine de BundledSQLiteDriver'dan yararlanmak isteyen kod tabanlarının artımlı olarak taşınması için kullanışlıdır. (Icf6ac)
  • Watch OS ve TV OS için KMP hedefleri ekleyin (I228f6, b/394238801)

Hata Düzeltmeleri

  • Askıya alma işlemleri ve AndroidSQLiteDriver kullanılırken zaman zaman meydana gelebilen kilitlenme sorunu düzeltildi. (b/415006268)

Sürüm 2.7

Sürüm 2.7.2

18 Haziran 2025

androidx.room:room-*:2.7.2 iptal edilir. 2.7.2 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • KSP ile yerel kaynaklar işlenirken açıklama değerlerinin yanlış okunmasına ve bazen şema dışa aktarmalarının eksik olmasına neden olan sorun düzeltildi. (b/416549580)
  • Bir SQL'deki yorumların, ifadelerin okunmayan sorgular gibi yürütülmesine neden olduğu hata düzeltildi. (b/413061402)
  • Şema dizini boş olduğundan Room'un Gradle eklentisinin yapılandırılamamasıyla ilgili sorun düzeltildi. (b/417823384)
  • Bağlantı oluşturmak çok uzun sürdüğünde artık SQLiteException oluşturulmayacak, bunun yerine kitaplık tarafından bir günlük mesajı gönderilecek. Hata oluşturmak yerine günlük kaydı oluşturmak, iOS'te askıya alma döngülerine neden olan ve Room'un bağlantıyı elde eden Kotlin Coroutine'de oluşan zaman aşımını yanlış yorumlamasına yol açan, dolayısıyla bir iOS uygulaması arka plana alındığında ve daha sonra bir veritabanı işlemi ortasında devam ettirildiğinde istisnanın oluşturulmasını engelleyen sorunları giderir. (b/422448815)

Sürüm 2.7.1

23 Nisan 2025

androidx.room:room-*:2.7.1 iptal edilir. 2.7.1 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Sağlanan tür dönüştürücü doğrulaması sırasında IndexOutOfBoundsException hatası düzeltildi. (b/409804755).
  • SQLiteDriver, Oda ile yapılandırıldığında RoomDatabase.runInTransaction() desteği. (b/408364828).

Sürüm 2.7.0

9 Nisan 2025

androidx.room:room-*:2.7.0 iptal edilir. 2.7.0 sürümü bu commit'leri içerir.

2.6.0 sürümünden beri yapılan önemli değişiklikler

  • Kotlin Multiplatform (KMP) Desteği: Bu sürümde Room, Kotlin Multiplatform (KMP) kitaplığı olacak şekilde yeniden düzenlendi. Şu anda desteklenen platformlar Android, iOS, JVM (Masaüstü), yerel Mac ve yerel Linux'tur. Room KMP'yi kullanmaya başlama hakkında daha fazla bilgi için lütfen resmi Room KMP belgelerine bakın. KMP desteği kapsamında Room, SQLiteDriver ile de yapılandırılabilir. Mevcut bir uygulamayı sürücü API'lerine ve Room KMP'ye taşıma hakkında bilgi edinmek için taşıma belgelerine bakın.
  • İşleme KSP üzerinden yapılıyorsa KSP'de Kotlin kodu oluşturma varsayılan olarak ETKİN hale getirildi. Yalnızca KAPT veya Java projelerinde Room, Java kaynakları oluşturmaya devam eder.
  • Kotlin 2.0 ve KSP2: Room artık Kotlin 2.0 dilini hedefliyor ve projelerin Kotlin 2.0 ile eşdeğer veya daha yüksek bir dil sürümüyle derlenmesini gerektiriyor. KSP2 desteği de eklendi. Room'u Kotlin 2.0 veya sonraki sürümlerle kullanırken KSP2'nin kullanılması önerilir.

Sürüm 2.7.0-rc03

26 Mart 2025

androidx.room:room-*:2.7.0-rc03 iptal edilir. 2.7.0-rc03 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Artık, engelleme DAO işlevleri de dahil olmak üzere oda engelleme API'lerinin yürütülmesi sırasında bir ileti dizisi kesintiye uğradığında InterruptedException oluşturulmuyor (b/400584611).
  • SQLException: Error code: 5, message: Timed out attempting to acquire a reader connection. ve benzeri sorunları azaltmak için Room'un bağlantı havuzunu yeniden uygulayın (b/380088809).

Sürüm 2.7.0-rc02

12 Mart 2025

androidx.room:room-*:2.7.0-rc02 iptal edilir. 2.7.0-rc02 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Otomatik taşıma işlemlerinin, FTS tablosundaki yeni bir sütunu yanlış işlemesi sorunu düzeltildi. (b/348227770, Ic53f3)
  • KSP aracılığıyla JVM dışı kaynaklar işlenirken NullPointerException nedeniyle oluşan oda derleyicisi kilitlenmesi düzeltildi. (b/396607230, I693c9)
  • Room'un, yazar bağlantısı kullanıldıktan sonra tabloları geçersiz kılmamasına neden olan sorun düzeltildi. (b/340606803, I73ef6)

Sürüm 2.7.0-rc01

26 Şubat 2025

androidx.room:room-*:2.7.0-rc01 iptal edilir. 2.7.0-rc01 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Room'un, ilk veritabanı bağlantısında busy_timeout değerini ayarlamamasına ve bunun da SQLException: Error code: 5, message: database is locked sorunlarına (I93208, b/380088809) yol açmasına neden olan sorun düzeltildi.
  • Room'un derleyicisindeki, Kotlin 2.1.x ve KSP1'de (I883b8, b/396607230) yerel kaynak kümeleri (ör. iOS) işlenirken KSP işlemcisinin kilitlenmesine neden olan sorun düzeltildi.

Sürüm 2.7.0-beta01

12 Şubat 2025

androidx.room:room-*:2.7.0-beta01 iptal edilir. 2.7.0-beta01 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • RoomDatabase.inTransaction() kapalı bir veritabanını açmaması gerektiği halde açma ve veritabanı kapalıysa hızlı bir şekilde yanlış döndürme sorunu düzeltildi (b/325432967).
  • Kotlin inline / value sınıflarıyla (b/388299754) DAO işlevleri işlenirken Room'un derleyicisinde kilitlenmeye (IllegalArgumentException: not a valid name) neden olan sorun düzeltildi.
  • Oluşturulan veritabanı uygulamasının varsayılan oluşturucusu, yansıtma kullanan Room'un varsayılan başlatma işlemi tarafından kullanıldığından kaldırılmaması için room-runtime JVM yapısına ProGuard kurallarını ekleyin (b/392657750).

Sürüm 2.7.0-alpha13

29 Ocak 2025

androidx.room:room-*:2.7.0-alpha13 iptal edilir. 2.7.0-alpha13 sürümü bu commit'leri içerir.

API Değişiklikleri

Hata Düzeltmeleri

  • Android'de yol yerine basit bir ad kullanıldığında ve veritabanı dosyasının çözümlenmiş yolu uygulamanın veri dizininde bulunmadığında Room KMP veritabanı oluşturucusundaki sorun düzeltildi. (I83315, b/377830104)
  • Room Gradle eklentisinde, şema girişlerinin ve çıkışının yapılandırılmasının Android projelerinde soruna neden olduğu sorun düzeltildi: property 'inputDirectory' is final and cannot be changed any further. (1dbb4c, b/376071291)
  • Room Gradle eklentisine KSP2 desteği eklendi. Bu sayede, şema dizininin eklenti tarafından düzgün şekilde ayarlanmamasına neden olan sorun düzeltildi. (Iec3c4, b/379159770)

Harici Katkı (External Contribution)

  • Yenilenecek ilk anahtar listenin sonuna çok yakın olduğunda kullanıcı arayüzünde atlamalara neden olan Room sayfalama entegrasyonuyla ilgili sorun düzeltildi. Thanks to Eva! (I2abbe, b/389729367)

Sürüm 2.7.0-alpha12

11 Aralık 2024

androidx.room:room-*:2.7.0-alpha12 iptal edilir. 2.7.0-alpha12 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Room'un geçersiz kılma takibi için bellek içi tablo kullanıp kullanmayacağını yapılandırmak üzere deneysel API RoomDatabase.Builder.setInMemoryTrackingMode()'yi ekleyin. (I2a9b2, b/185414040)

Hata Düzeltmeleri

  • Yıkıcı taşıma işlemleri artık görünümleri bırakarak yeniden oluşturulmalarını sağlıyor. Böylece, allowDestructiveMigrationForAllTables AÇIK olduğunda (KMP varsayılanı) davranış, KAPALI olduğundaki mevcut davranışla aynı oluyor. (0a3e83, b/381518941)

Sürüm 2.7.0-alpha11

30 Ekim 2024

androidx.room:room-*:2.7.0-alpha11 iptal edilir. 2.7.0-alpha11 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Oda çağrısı için RawRoomQuery alan bir askıya alma işlevi olacak şekilde yeni eklenen convertRows() yöntemi imzasını yeniden gözden geçirin. (Ie57b5, b/369136627)

Hata Düzeltmeleri

  • @Relation ile PagingSource birlikte kullanıldığında oda çağrısında geçersiz kod oluşturulmasına neden olan sorun düzeltildi.

Sürüm 2.7.0-alpha10

16 Ekim 2024

androidx.room:room-*:2.7.0-alpha10 iptal edilir. 2.7.0-alpha10 sürümü bu commit'leri içerir.

API Değişiklikleri

  • Android ve JVM dışı platformlarda ByteBuffer ile İlişkiler özelliğini desteklemek için dahili ByteArrayWrapper sınıfı oluşturun. (I75543, b/367205685)
  • Bir sütunun veri türünü almak için çeşitli SQLITE_DATA_* sonuç sabitleriyle birlikte SQLiteStatement.getColumnType() işlevini ekleyin. (I1985c, b/369636251)

Sürüm 2.7.0-alpha09

2 Ekim 2024

androidx.room:room-*:2.7.0-alpha09 iptal edilir. 2.7.0-alpha09 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Okuma bağlantısında yazma işlemi başlatılması nedeniyle Error code: 8, message: attempt to write a readonly database hatasına neden olan room-paging KMP uygulamasındaki bir sorun düzeltildi. (b/368380988)

Sürüm 2.7.0-alpha08

18 Eylül 2024

androidx.room:room-*:2.7.0-alpha08 iptal edilir. 2.7.0-alpha08 sürümü bu commit'leri içerir.

Yeni Özellikler

  • room-paging yapıları, KMP ile uyumlu olacak şekilde taşındı. (Ib8756, b/339934824)
  • invalidationTrackerFlow() API, InvalidationTracker.createFlow() olarak birinci taraf API'si haline getirildi ve artık KMP projelerindeki Android olmayan kaynak kümeleri için kullanılabilir. (I1fbfa, (I8fb29), b/329291639, b/329315924)

API Değişiklikleri

  • Cursor kelimesinin kullanıldığı tüm uyarılar ve hata mesajları, Cursor kelimesi artık Room'un KMP sürümünde kullanılacak doğru bir genel terim olmadığı için kaldırıldı veya değiştirildi. (Id8cd9, b/334087492)

Hata Düzeltmeleri

  • Room KMP'nin JVM olmayan platformlar için UUID kullanarak kod yayınlamaya çalışmasına neden olan sorun düzeltildi. (b/362994709)
  • Compose Multiplatform ile KMP projesinde kullanıldığında "Cannot change attributes of configuration … after it has been locked for mutation" (Yapılandırmanın özellikleri, mutasyon için kilitlendikten sonra değiştirilemez) gibi bir hataya neden olan Room Gradle eklentisiyle ilgili sorun düzeltildi. (b/343408758)

Sürüm 2.7.0-alpha07

21 Ağustos 2024

androidx.room:room-*:2.7.0-alpha07 iptal edilir. 2.7.0-alpha07 sürümü bu commit'leri içerir.

Yeni Özellikler

  • Room Gradle Eklentisi artık dışa aktarılan şemaları Android Instrumentation Test kaynak kaynaklarına otomatik olarak ekleyecek. Böylece bu şemalar MigrationTestHelper tarafından kullanılabilecek.

Hata Düzeltmeleri

  • RoomDatabaseConstructor işlevinin oluşturulan "gerçek" değerinin, initialize işlevinde "gerçek" değiştiricisinin eksik olmasıyla ilgili bir sorun düzeltildi. Bu işlev, "beklenen" bildiriminde de geçersiz kılınmışsa bu sorun oluşuyordu. (359631627)
  • Oluşturulan RoomDatabaseConstructor "gerçek" değerinin, "beklenen" bildiriminin görünürlüğüyle eşleşmemesi sorunu düzeltildi. (358138953)

Sürüm 2.7.0-alpha06

7 Ağustos 2024

androidx.room:room-*:2.7.0-alpha06 iptal edilir. 2.7.0-alpha06 sürümü bu commit'leri içerir.

API Değişiklikleri

  • KMP projesinde RoomDatabase için örnekleme kurulumunu değiştirin.

Kotlin 2.0 derleme modeli nedeniyle, instantiateImpl() adlı oluşturulacak bir işlevi referans alma stratejisi artık geçerli değildir. instantiateImpl() stratejisinin yerini alan @ConstructedBy ve RoomDatabaseConstructor olmak üzere iki yeni API kullanıma sunulmuştur. Yeni strateji aşağıdaki gibidir:

  1. RoomDatabaseConstructor öğesini uygulayan bir expect nesnesi tanımlayın.

      expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
    
  2. @ConstructedBy kullanarak nesneyi @Database beyanıyla bağlayın.

      @Database(...)
      @ConstructedBy(MyDatabaseCtor::class) // NEW
      abstract class MyDatabase : RoomDatabase
    
  3. Yeni bir veritabanı örneği oluşturun ancak fabrika bağımsız değişkenini iletmeden

      fun createNewDatabase(path: String) =
        Room.databaseBuilder<AppDatabase>(name = path)
          .setDriver(BundledSQLiteDriver())
          .setQueryCoroutineContext(Dispatchers.IO)
          .build()
    

b/316978491, b/338446862 ve b/342905180 numaralı sorunlar düzeltildi.

  • Ham SQL dizesini tutma açısından SupportSQLiteQuery'ye benzeyen ve bağımsız değişkenleri bir ifadeye bağlama işlevi sunan RoomRawQuery adlı yeni bir API ekleyerek Room KMP'de @RawQuery desteği. @RawQuery ile açıklama eklenmiş işlevler artık tek parametre olarak RoomRawQuery kabul edebilir. (Iea844, b/330586815)
  • setQueryCallback() kabul eden bir CoroutineContext aşırı yüklemesi ekleyin. (Id66ff, b/309996304)
  • linuxArm64 Kotlin Multiplatform hedefleri için destek eklendi (I139d3, b/338268719)

Hata Düzeltmeleri

  • Room'un Android olmayan hedeflerde recursiveFetchArrayMap için yanlışlıkla arama oluşturmasına neden olan sorun düzeltildi. (710c36, b/352482325)
  • Bazen Room'un KMP projesinde "Bağlantı kurma girişimi zaman aşımına uğradı" ile ilgili bir istisna oluşturmasına neden olan sorun düzeltildi. (fa72d0, b/347737870)
  • Diğer tablolar şemalarını yeni yabancı anahtarlara uyacak şekilde değiştirmeden önce otomatik taşıma işlemlerinde yabancı anahtarların çok erken kontrol edilmesine neden olan sorun düzeltildi. (7672c0, b/352085724)

Sürüm 2.7.0-alpha05

10 Temmuz 2024

androidx.room:room-*:2.7.0-alpha05 iptal edilir. 2.7.0-alpha05 sürümü bu commit'leri içerir.

API Değişiklikleri

  • SQLiteKt, SQLite olarak, BundledSQLiteKt ise BundledSQLite olarak yeniden adlandırıldı. (I8b501)

Hata Düzeltmeleri

  • AndroidSQLiteDriver kullanılırken RoomDatabase'nın kilitlenmesine veya bağlantı zaman aşımıyla hata vermesine neden olan hata düzeltildi.

Sürüm 2.7.0-alpha04

12 Haziran 2024

androidx.room:room-*:2.7.0-alpha04 iptal edilir. 2.7.0-alpha04 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Room'un ek açıklama işlemcisinin, bir DAO'da çoklu harita dönüş türü tanımlandığında uyumsuz KMP kodu oluşturmasına neden olan sorun düzeltildi. (b/340983093)
  • @Database ek açıklamalı sınıfta paket yoksa Room'un oluşturulan veritabanı uygulamasını bulamamasına neden olan sorun düzeltildi. (b/342097292)
  • Otomatik kapatma ve çoklu örnek geçersiz kılma etkinleştirildiğinde, veritabanı boşta kalma nedeniyle otomatik olarak kapatıldığında bazen ConcurrentModificationException hatasına neden olan sorun düzeltildi.

Sürüm 2.7.0-alpha03

29 Mayıs 2024

androidx.room:room-*:2.7.0-alpha03 iptal edilir. 2.7.0-alpha03 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Kotlin 2.0 ve KSP 2.0 ile ilgili çeşitli sorunlar düzeltildi. KSP 2 desteğiyle Kotlin 2.0'ın henüz tamamlanmadığını ve ekibin yeni derleyicideki çeşitli API'ler ve davranış değişiklikleri üzerinde çalıştığını unutmayın. (b/314151707)

Sürüm 2.7.0-alpha02

14 Mayıs 2024

androidx.room:room-*:2.7.0-alpha02 iptal edilir. 2.7.0-alpha02 sürümü bu commit'leri içerir.

Hata Düzeltmeleri

  • Çeşitli KSP sorunları düzeltildi.

Sürüm 2.7.0-alpha01

1 Mayıs 2024

androidx.room:room-*:2.7.0-alpha01 iptal edilir. 2.7.0-alpha01 sürümü bu commit'leri içerir.

Yeni Özellikler

  • Kotlin Multiplatform (KMP) Desteği: Bu sürümde Room, Kotlin Multiplatform (KMP) kitaplığı olacak şekilde yeniden düzenlendi. Bu sürümde, işlevlerin büyük bir kısmının "ortaklaştırıldığı" (çok platformlu hale getirildiği) yeni bir Room sürümü kullanıma sunuluyor. Ancak henüz tamamlanması gereken bazı çalışmalar var. Şu anda desteklenen platformlar Android, iOS, JVM (Masaüstü), yerel Mac ve yerel Linux'tur. Yeni desteklenen platformlardaki eksik işlevler, yaklaşan Room sürümlerinde "özellik açısından tamamlanmış" hale getirilecek.

Room KMP'yi kullanmaya başlama hakkında daha fazla bilgi için lütfen resmi Room KMP belgelerine bakın.

  • İşleme KSP üzerinden yapılıyorsa KSP'de Kotlin kodu oluşturma varsayılan olarak ETKİN hale getirildi. Yalnızca KAPT veya Java projelerinde Room, Java kaynakları oluşturmaya devam eder.

API Değişiklikleri

  • Oluşturulan RoomDatabase uygulamasını başlatırken yansıtma kullanılmasını önlemek için Room tarafından oluşturulan bir işlevle kullanılması amaçlanan bir lambda parametresi alan Room.databaseBuilder() aşırı yüklemesi eklendi. Örnek kullanım:
Room.databaseBuilder<MyDatabase>(
    context = appContext,
    name = dbFilePath,
    factory =  { MyDatabase::class.instantiateImpl() }
)
  • Odayı CoroutineContext ile yapılandırmak için bir API, oluşturucuya eklendi: RoomDatabase.Builder.setQueryCoroutineContext. RoomDatabase öğesinin yalnızca setQueryExecutor kullanan yürütücülerle veya bir Coroutine bağlamıyla yapılandırılabileceğini, ancak ikisiyle birden yapılandırılamayacağını unutmayın.
  • SQLite sürücüsüyle Room'u yapılandırmak için bir API eklendi: RoomDatabase.Builder.setDriver(). SQLite Driver API hakkında daha fazla bilgi için SQLite KMP belgelerine bakın.
  • Sürücü API'lerinden temel SQLiteConnection öğesine erişmek için API'ler eklendi: RoomDatabase.useReaderConnection ve RoomDatabase.useWriterConnection.
  • Varios Room ile ilgili çeşitli geri çağırma işlevleri artık SupportSQLiteDatabase yerine SQLiteConnection alan aşırı yüklenmiş bir sürüme sahip. Bunlar, KMP projesine geçiş sırasında geçersiz kılınmak üzere tasarlanmıştır. Android uygulamasındaki Room kullanımlarını ortak bir KMP modülüne taşıma hakkında daha fazla bilgi için taşıma rehberine bakın. Geri aramalar:
    • Migration.migrate(SQLiteConnection)
    • AutoMigrationSpec.onPostMigrate(SQLiteConnection)
    • RoomDatabase.Callback.onCreate(SQLiteConnection)
    • RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
    • RoomDatabase.Callback.onOpen(SQLiteConnection)
  • KTX yapısı androidx.room:room-ktx, tüm API'leriyle birlikte androidx.room:room-runtime ile birleştirildi. Yapı artık boş. Lütfen bunu bağımlılık listenizden kaldırın.

Sürüm 2.6

Sürüm 2.6.1

29 Kasım 2023

androidx.room:room-*:2.6.1 iptal edilir. 2.6.1 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Oluşturulan kodda, EntityCursorConverter içindeki Double sütunlarının varsayılan değerinin 0.0 yerine 0 olarak ayarlanması sorunu düzeltildi. Kayan nokta türü sütunlar için benzer bir uç durumun olası düzeltmesi de dahil edildi. (Id75f5, b/304584179)
  • PagingSource yüklemelerinden oluşturulan istisnalar artık Throwable'ı içeren LoadResult.Error LoadStateUpdate olarak yayılır. Bu hata durumu PagingDataAdapter.loadStateFlow(Views) veya LazyPagingItems.loadState(Compose) üzerinden gözlemlenebilir. Bu değişikliğin, geçmişte yükleme hatalarının yüklemeyi tetikleyen dao yöntemi tarafından oluşturulan bir istisna olarak ortaya çıktığı davranışsal bir değişikliği işaret ettiğini unutmayın. (I93887, b/302708983)

Sürüm 2.6.0

18 Ekim 2023

androidx.room:room-*:2.6.0 iptal edilir. 2.6.0 sürümü şu commit'leri içerir.

2.5.0 sürümünden beri yapılan önemli değişiklikler

  • Kotlin kodu oluşturmayı (veya "Kotlin CodeGen") etkinleştirme seçeneği artık Room KSP'de kullanılabilir. (4297ec0). Room'da Kotlin CodeGen'i etkinleştirmek için KSP'nin işlemci seçeneklerine room.generateKotlin seçenek adını ekleyin. KSP için işlemci seçeneklerini iletme hakkında daha fazla bilgi için KSP belgelerine bakın.

Not: Kotlin CodeGen kullanılırken ek kısıtlamalar olduğunu unutmayın. Kotlin CodeGen'de DAO getter'ları veya DAO sorguları olarak soyut özelliklere izin verilmez. Bunun yerine, özellik değerinin değişmez olduğu ve sabit bir saklanmış sonuç içerdiği yanlış fikrini önlemek için işlev olarak yeniden yazılması beklenir. Eklenen bir diğer kısıtlama ise Kotlin CodeGen için Room'da artık Nullable koleksiyon dönüş türlerine izin verilmemesidir.

Uyarı: Kotlin CodeGen kullanılırken projelerinizin nullability açısından daha katı olduğunu görebilirsiniz. Kotlin CodeGen'de tür bağımsız değişkenlerinin null değer alabilirliği önemlidir. Java'da ise bu durum genellikle göz ardı edilir. Örneğin, `Flow<foo\>` dönüş türünüz olduğunu ve tablonun boş olduğunu varsayalım. Bu durum Java CodeGen'de herhangi bir soruna neden olmaz ancak Kotlin CodeGen'de hata alırsınız. Bunu önlemek için, boş değerin yayınlandığını varsayarak `Flow<foo?\>` kullanmanız gerekir. </foo?\></foo\>

  • Room Gradle eklentisinin yeni yapısı, androidx.room kimliğiyle Room'a eklendi. Bu yapı, Gradle ek açıklama işleme seçenekleri aracılığıyla şemaların giriş ve çıkışlarının olmasıyla ilgili olarak Room'da mevcut olan çeşitli sorunları çözüyor. Daha fazla bilgi için Room 2.6.0-alpha02 sürüm notlarına göz atın.
  • Room Varlıkları'ndaki değer sınıfları artık KSP için destekleniyor. (4194095)
  • DAO işlevlerindeki iç içe yerleştirilmiş Harita dönüş türleri artık Room'da destekleniyor. (I13f48, 203008711)

Sürüm 2.6.0-rc01

20 Eylül 2023

androidx.room:room-*:2.6.0-rc01 iptal edilir. 2.6.0-rc01 sürümü şu commit'leri içerir.

Sürüm 2.6.0-beta01

23 Ağustos 2023

androidx.room:room-*:2.6.0-beta01 iptal edilir. 2.6.0-beta01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • SQLite özel durumunu işleme: Bir upsert işlemi sırasında 2067 SQLITE_CONSTRAINT_UNIQUE özel durumu oluşturulduğunda upsert işlemi güncelleme gerçekleştirmelidir. (If2849, b/243039555)

Sürüm 2.6.0-alpha03

9 Ağustos 2023

androidx.room:room-*:2.6.0-alpha03 iptal edilir. 2.6.0-alpha03 sürümünde şu commit'ler yer alıyor.

Yeni Özellikler

  • DAO işlevlerindeki iç içe yerleştirilmiş Harita dönüş türleri artık Room'da destekleniyor. (I13f48, 203008711)

API Değişiklikleri

  • Artık kullanımdan kaldırılan @MapInfo yerine @MapColumn adlı yeni bir tür ek açıklaması oluşturuldu. Bir @MapInfo açıklamasında sağlanan her sütun adı (keyColumnName, valueColumnName veya her ikisi) için yalnızca columnName içeren bir @MapColumn açıklaması bildirmeniz ve açıklamayı, DAO işlevinin dönüş türünde referans verilen belirli türdeki bağımsız değişkende (Harita'nın anahtarı veya değeri) kullanmanız gerekir. Bunun nedeni, @MapColumn ek açıklamasının @MapInfo gibi işlevin kendisinde değil, DAO işlevinin dönüş türündeki tür bağımsız değişkeninde doğrudan kullanılmasıdır. Daha fazla bilgi için lütfen @MapColumn dokümanlarına bakın. (Ib0305, b/203008711)
  • Uyumluluk bastırmayı açıklama eklemek için API dosyaları güncellendi (I8e87a, b/287516207)
  • Room Gradle eklentisi API'leri, her zaman varyant başına yapılandırma gerektirmeyecek şekilde güncellendi. Bu sayede eklenti, birden fazla dizin oluşturmadan tüm varyantlar için genel bir konum kabul edebilir. Böylece, daha sorunsuz geçişler sağlanır ancak eklentinin avantajlarını (yeniden üretilebilir ve önbelleğe alınabilir derlemeler) korurken lezzetleri veya derleme türü şemalarını manuel olarak yapılandırmak için yeterli esneklik de sunulur. (I09d6f, b/278266663)

Hata Düzeltmeleri

  • QueryInterceptorStatement'daki olası bellek sızıntısı güvenlik açığı düzeltildi. (I193d1)
  • QueryInterceptorDatabase execSQL() işlevindeki hatalı davranış düzeltildi. (Iefdc8)

Sürüm 2.6.0-alpha02

21 Haziran 2023

androidx.room:room-*:2.6.0-alpha02 iptal edilir. 2.6.0-alpha02 sürümünde şu commit'ler yer alıyor.

Room Gradle Plugin

Bu yeni sürümde, androidx.room kimlikli Room Gradle eklentisi için yeni bir yapay nesne yer alıyor. Bu yapay nesne, Gradle ek açıklama işlemcisi seçenekleri aracılığıyla şemaların giriş ve çıkışlarının olmasıyla ilgili olarak Room'da mevcut olan çeşitli sorunları çözüyor. Room Gradle eklentisi, projeyi otomatik taşımalar için kullanılan ve derleme görevlerinin çıktısı olan oluşturulmuş şemaların tekrarlanabilir ve önbelleğe alınabilir derlemelere sahip olacak şekilde doğru yapılandırılmasını sağlayacak şekilde yapılandırır. Eklenti, temel şema konumunu yapılandırmak için bir DSL sunar:

room {
    schemaDirectory("$projectDir/schemas/")
}

Eklenti daha sonra Room derleyicisini, çeşitli derleme görevlerini ve arka uçlarını (javac, KAPT, KSP) şema dosyalarını schemas/flavorOneDebug/com.package.MyDatabase/1.json gibi farklı klasörlere çıkacak şekilde yapılandırır. Bu dosyalar, doğrulama ve otomatik taşıma işlemleri için kullanılmak üzere her zamanki gibi depoya kaydedilir. Açıklama işlemcisi seçenekleri yerine eklentiyi kullanmaya geçiş yapıldığında mevcut şema dosyaları, eklenti tarafından oluşturulan üretilmiş tür dizinlerine kopyalanmalıdır. Bu, manuel olarak yapılması gereken tek seferlik bir taşıma işlemidir. Geri bildirimler ele alındıktan ve eklenti kararlı sürüme ulaştıktan sonra developers.android.com adresindeki şema dokümanları güncellenecektir. Bu nedenle, lütfen eklentiyi deneyin.

API Değişiklikleri

  • RoomDatabase.QueryCallback, SAM dönüşümü kullanımlarına izin vermek için işlevsel bir arayüz olarak tanımlanmıştır. (Iab8ea, b/281008549)

Hata Düzeltmeleri

  • Room kaynakları Java'dan Kotlin'e taşındıktan sonra Robolectric'te veritabanı oluşturulurken ortaya çıkan sorun çözüldü. (Ic053c, b/274924903)

Sürüm 2.6.0-alpha01

22 Mart 2023

androidx.room:room-*:2.6.0-alpha01 iptal edilir. 2.6.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • KSP için Room'da değer sınıflarını destekleme. Room artık Varlıklarda değer sınıflarını destekleyebiliyor. (4194095)
  • Kotlin kodu oluşturma(veya "Kotlin CodeGen") artık Room'da etkinleştirilebilir (4297ec0). Room'da Kotlin CodeGen'i etkinleştirmek için KSP'nin işlemci seçeneklerine room.generateKotlin seçenek adını ekleyin. KSP için işlemci seçeneklerini iletme hakkında daha fazla bilgi için KSP belgelerine bakın.

Not: Kotlin CodeGen kullanılırken ek kısıtlamalar olduğunu unutmayın. Kotlin CodeGen'de DAO getter'ları veya DAO sorguları olarak soyut özelliklere izin verilmez. Bunun yerine, özellik değerinin değişmez olduğu ve sabit bir saklanmış sonuç içerdiği yanlış fikrini önlemek için işlev olarak yeniden yazılması beklenir. Eklenen bir diğer kısıtlama ise Kotlin CodeGen için Room'da artık Nullable koleksiyon dönüş türlerine izin verilmemesidir.

Uyarı: Kotlin CodeGen kullanılırken projelerinizin nullability açısından daha katı olduğunu görebilirsiniz. Kotlin CodeGen'de tür bağımsız değişkenlerinin null değer alabilirliği önemlidir. Java'da ise bu durum genellikle göz ardı edilir. Örneğin, `Flow<foo\>` dönüş türünüz olduğunu ve tablonun boş olduğunu varsayalım. Bu durum Java CodeGen'de herhangi bir soruna neden olmaz ancak Kotlin CodeGen'de hata alırsınız. Bunu önlemek için, boş değerin yayınlandığını varsayarak `Flow<foo?\>` kullanmanız gerekir. </foo?\></foo\>

API Değişiklikleri

  • DAO yöntemi dönüş türlerinde null değer atanabilir koleksiyonların anlamsız kullanımına karşı koruma. (I777dc, b/253271782, b/259426907)
  • Geçersiz kılma izleyici değişikliklerini yayan bir Akış oluşturmak için API ekleyin. API, veritabanı değişikliklerine tepki vermesi gereken yayınlar oluşturmak için kullanışlıdır. (I8c790, b/252899305)

Hata Düzeltmeleri

  • Kotlin kod oluşturmada soyut özelliklerin DAO getter'ları veya DAO sorguları olarak kullanılmasına izin verilmez. Bunun yerine, özellik değerinin değişmez olduğu ve sabit bir saklanmış sonuç içerdiği yanlış fikrini önlemek için işlev olarak yeniden yazılmaları gerekir. (If6a13, b/127483380, b/257967987)

Sürüm 2.5.2

Sürüm 2.5.2

21 Haziran 2023

androidx.room:room-*:2.5.2 iptal edilir. 2.5.2 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • kotlinx-metadata-jvm ile ilgili uyumsuzluk sorununu düzeltin. (386d5c)
  • Room, Robolectric testinde kullanılırken hataya neden olan sorun düzeltildi. (f79bea, b/274924903)

Sürüm 2.5.1

Sürüm 2.5.1

22 Mart 2023

androidx.room:room-*:2.5.1 iptal edilir. 2.5.1 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Veritabanı zaten açıksa FrameworkSQLiteHelper bölümünde veritabanı üst dizinini kontrol etmekten kaçının. (5de86b8)
  • Veritabanının açık olup olmadığını kontrol ederken isOpenInternal işaretini kullanın. (e91fb35)
  • acquireTransactionThread() içinde yeniden giriş durumunun daha iyi işlenmesi artık mümkün.Room (219f98b). Askıya alma işlemi sırasında Room, işlem yürütücüsünden bir iş parçacığı kullanır, bu iş parçacığında bir etkinlik döngüsü başlatır ve askıya alma veritabanı işlemlerini bu iş parçacığına gönderir. Böylece, tüm işlemler işlem eş yordamı içinde kapsüllenir. İşlem ileti dizisinin, işlemi başlatan ileti dizisinden farklı olması beklenir ancak bazı durumlarda bu iki ileti dizisi aynıdır. Bu tür yeniden giriş durumlarını işlemek için withTransaction(), artık bir kontrol işine dayanmayacak şekilde yeniden düzenlendi. Bunun yerine, askıya alma işlem bloğunu işlem iş parçacığındaki runBlocking içinden yürütecek.

Sürüm 2.5.0

Sürüm 2.5.0

22 Şubat 2023

androidx.room:room-paging-guava:2.5.0, androidx.room:room-paging-rxjava2:2.5.0 ve androidx.room:room-paging-rxjava3:2.5.0 yayınlandı. 2.5.0 sürümü şu commit'leri içerir.

Sürüm 2.5.0

11 Ocak 2023

androidx.room:room-*:2.5.0 iptal edilir. 2.5.0 sürümü şu commit'leri içerir.

2.4.0 sürümünden beri yapılan önemli değişiklikler

  • room-runtime kaynaklarının tümü Java'dan Kotlin'e dönüştürüldü. Kitaplığın Kotlin'e dönüştürülmesi nedeniyle kodunuz Kotlin'de ise kaynak uyumsuzluğu sorunlarıyla karşılaşabileceğinizi unutmayın. Örneğin, bilinen bir kaynak uyumsuzluğu değişikliği, InvalidationTracker sürümünde artık Observer içinde onInvalidate() öğesini MutableSet değil, Set türünde bir parametreye sahip olacak şekilde bildirmeniz gerektiğidir. Ayrıca, belirli getter yöntemleri, Kotlin dosyalarında özellik erişim söz dizimi gerektiren özelliklere dönüştürüldü. Önemli uyumsuzluklar varsa lütfen hata bildiriminde bulunun.
  • Benzersizlik çakışması olmadığında bir öğe eklemeye veya çakışma olduğunda öğeyi güncellemeye çalışan yeni bir kısayol ek açıklaması (@Upsert) eklendi. (I7aaab, b/241964353)
  • Oda sayfalandırma özelliğinde destek için yeni oda sayfalandırma öğeleri room-paging-rxjava2, room-paging-rxjava3 ve room-paging-guava eklendi.
  • @MapInfo içinde belirsizliği gidermek için anahtar ve değer tablosu adları sağlayan API'ler eklendi (Icc4b5).

Sürüm 2.5.0-rc01

7 Aralık 2022

androidx.room:room-*:2.5.0-rc01 iptal edilir. 2.5.0-rc01 sürümü şu commit'leri içerir.

  • Bu sürüm, 2.5.0-beta02 ile aynı.

Sürüm 2.5.0-beta02

9 Kasım 2022

androidx.room:room-*:2.5.0-beta02 iptal edilir. 2.5.0-beta02 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Java'nın dizi davranışıyla eşleşmesi için sorgu bağımsız değişkenlerini değişmez (Array<Any?>) olandan ters değişir (Array<out Any?>) olana alan çeşitli API'leri düzeltin. (b/253531073)

Sürüm 2.5.0-beta01

5 Ekim 2022

androidx.room:room-*:2.5.0-beta01 iptal edilir. 2.5.0-beta01 sürümü şu commit'leri içerir.

API Değişiklikleri

  • @Upsert'yı destekleyen minimum sürümü API 16 olarak kısıtlayın. Bunun nedeni, eski API'lerde birincil anahtar kısıtlaması çakışmasının belirlenememesidir. (I5f67f, b/243039555)

Hata Düzeltmeleri

  • Gölge tabloların şema .json dosyalarına yanlışlıkla dışa aktarılmasına ve bu dosyaların bozulmasına neden olan sorun düzeltildi. (I4f83b, b/246751839)

Sürüm 2.5.0-alpha03

24 Ağustos 2022

androidx.room:room-*:2.5.0-alpha03 iptal edilir. 2.5.0-alpha03 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Benzersizlik çakışması olmadığında bir öğe eklemeye veya çakışma olduğunda öğeyi güncellemeye çalışan yeni bir kısayol ek açıklaması (@Upsert) eklendi. (I7aaab, b/241964353)

Hata Düzeltmeleri

  • Room, otomatik taşıma sırasında yabancı anahtar kısıtlaması kontrolü yaparken artık IllegalStateException yerine SQLiteConstraintException istisnası oluşturacak. (I328dd)
  • getOpenHelper, getQueryExecutor ve getTransactionExecutor öğelerinin alıcıları / özellikleri için Kotlin kaynağıyla uyumlu olmayan bir değişikliği düzeltin. (Iad0ac)

Sürüm 2.5.0-alpha02

1 Haziran 2022

androidx.room:room-*:2.5.0-alpha02 iptal edilir. 2.5.0-alpha02 sürümünde şu commit'ler yer alıyor.

Yeni Özellikler

API Değişiklikleri

  • room-runtime'nın tamamı Java'dan Kotlin'e dönüştürüldü. (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c25, b/206859668)

    Not: Kitaplık Kotlin'e dönüştürüldüğünden kaynak uyumsuzluğu sorunlarıyla karşılaşabilirsiniz. Kodunuz Kotlin'de yazılmışsa ve Room'un eski sürümünü çağırıyorsa yeni sürümün bu durumları işlemesi gerekir. Örneğin, bilinen bir kaynak uyumsuzluğu değişikliği, InvalidationTracker sürümünde artık Observer içinde onInvalidate() öğesini MutableSet değil, Set türünde bir parametreye sahip olacak şekilde bildirmeniz gerektiğidir.

  • @MapInfo içinde belirsizliği gidermek için anahtar ve değer tablosu adları sağlayan API'ler eklendi (Icc4b5).
  • Mülk alıcılarında @Ignore öğesine yeniden izin vermek için kaynak uyumluluğu sorununu düzeltin. (Ifc2fb)

Hata Düzeltmeleri

  • Yinelenen sütun çözümü için sezgisel algoritma. Room artık çoklu harita sorgusundaki belirsiz sütunları çözmeye çalışacak. Bu sayede, aynı ada sahip tabloları içeren tablolarla yapılan JOIN işlemleri bir sonuç veri nesnesiyle doğru şekilde eşlenebilir. (I4b444, b/201306012, b/212279118)

Sürüm 2.5.0-alpha01

23 Şubat 2022

androidx.room:room-*:2.5.0-alpha01 iptal edilir. 2.5.0-alpha01 sürümü şu commit'leri içerir.

API Değişiklikleri

  • Kotlin kaynaklarında oda @IntDef kullanımının zorunlu kılınmamasına neden olan sorun düzeltildi. (I75f41, b/217951311)
  • Mülk alıcılarında @Query'ın yeniden kullanılmasına izin vermek için kaynak uyumluluğu sorunu düzeltildi. (I0a09b)
  • Java'dan Kotlin'e dönüştürülen oda ortak alanı. (I69c48, b/206858235)

    Not: Kitaplık Kotlin'e dönüştürülürken bazı özellikler yardımcı nesnelere taşındığından kaynak uyumsuzluğu sorunlarıyla karşılaşabilirsiniz. Kodunuz Kotlin'de yazılmışsa ve Room'un eski sürümünü çağırıyorsa yeni sürümde bu özelliklere erişirken ".Companion" soneki kullanılması gerekir.

  • Java'dan Kotlin'e oda taşıma dönüştürüldü. (I2724b, b/206858622)
  • room-runtime içindeki paging ilgili dosyayı Java'dan Kotlin'e dönüştürdü. (I82fc8, b/206859668)
  • Çok işlemli ilk kez veritabanı oluşturma ve taşıma işlemlerini korumak için FrameworkSQLite* düzeyinde çok işlemli kilitleme ve kullanım için API eklendi. (Ied267, b/193182592)

Hata Düzeltmeleri

  • Kotlin kaynaklarında dahili özellikler için destek eklendi. Bu, Room'da işlevleri alıcılar/ayarlayıcılar olarak özelliklerle eşleştirirken işlevlerin kaynak adını kullanacağı küçük bir davranış değişikliğidir (daha önce, işlevlerin JVM adı kullanılıyordu ve bu ad, dahili işlevler/özellikler için farklıydı). Alıcıları/ayarlayıcıları özel özelliklerle eşleştirmek için özel @JvmName ek açıklamaları kullanıyorsanız lütfen güncellemeden sonra oluşturulan kodu tekrar kontrol edin (If6531, b/205289020).

Sürüm 2.4.3

Sürüm 2.4.3

27 Temmuz 2022

androidx.room:room-*:2.4.3 iptal edilir. 2.4.3 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Room'un Kotlin 1.7'deki askıya alma işlevlerini tanımamasına neden olan sorun düzeltildi (b/236612358).

Sürüm 2.4.2

Sürüm 2.4.2

23 Şubat 2022

androidx.room:room-*:2.4.2 iptal edilir. 2.4.2 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • -Xjvm-default=all veya eşdeğeriyle derleme nedeniyle varsayılan arayüz yöntemi oluşturan bir gövdeye sahip @Transaction suspend işlevi için kod oluşturma sorununu düzeltin. (Ia4ce5)
  • Room'un Array<ByteArray> dönüş türü sorgu yöntemi için kod oluşturduğu hata düzeltildi. (If086e, b/213789489)

Sürüm 2.4.1

Sürüm 2.4.1

12 Ocak 2022

androidx.room:room-*:2.4.1 iptal edilir. 2.4.1 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Kotlin kaynaklarında dahili özellikler için destek eklendi. Bu, Room'da işlevleri alıcılar/ayarlayıcılar olarak özelliklerle eşleştirirken işlevlerin kaynak adını kullanacağı küçük bir davranış değişikliğidir (daha önce, işlevlerin JVM adı kullanılıyordu ve bu ad, dahili işlevler/özellikler için farklıydı). Alıcıları/ayarlayıcıları özel özelliklerle eşleştirmek için özel @JvmName ek açıklamaları kullanıyorsanız lütfen güncellemeden sonra oluşturulan kodu tekrar kontrol edin (If6531, b/205289020).

Sürüm 2.4.0

Sürüm 2.4.0

15 Aralık 2021

androidx.room:room-*:2.4.0 iptal edilir. 2.4.0 sürümü şu commit'leri içerir.

2.3.0 sürümünden beri yapılan önemli değişiklikler

  • Otomatik taşıma işlemleri: Room artık şemalar dışa aktarıldığı sürece taşıma işlemlerini otomatik olarak oluşturmak için bir API sunuyor. Room'a yeni bir mülk için otomatik taşıma oluşturması gerektiğini bildirmek üzere, otomatik taşıma işleminin yapılacağı sürümleri bildirmek için @Database#autoMigrations kullanılabilir. Room'un tablolar ve sütun yeniden adlandırmaları veya silmeleriyle ilgili ek bilgilere ihtiyacı olduğunda @AutoMigration ek açıklaması, bu tür girişleri içeren bir spesifikasyon sınıfı bildirebilir. Daha fazla ayrıntı için @AutoMigration belgelerini inceleyin.
  • Otomatik taşımalarda bağımlılık ekleme: @ProvidedAutoMigrationSpec, AutoMigrationSpec öğesinin çalışma zamanında RoomDatabase.Builder#addAutoMigrationSpec() aracılığıyla sağlanacağını bildirmek için kullanılan yeni bir API'dir. Bu sayede, karmaşık bağımlılıklar gerektiğinde bu tür özellikleri sağlamak için bağımlılık ekleme çerçevesi kullanılabilir.
  • Otomatik taşıma işlemleri için taşıma testi yardımcısı desteği: Room'un MigrationTestHelper, test edilen veritabanı sınıfını alan yeni bir oluşturucu API sağlayarak otomatik taşıma işlemlerini destekleyecek şekilde güncellendi. Bu sayede yardımcı, runMigrationsAndValidate sırasında otomatik taşıma işlemlerini aynı şekilde otomatik olarak ekleyebilir.
  • Oda Sayfalama Desteği: androidx.room:room-paging yayınlandı. Bu sürüm, androidx.paging.PagingSource döndüren oda sorguları için yerel Sayfalama 3.0 desteği sunar.
  • İlişkisel Sorgu Yöntemleri: Room artık JOIN ifadeleri için yararlı olan çoklu harita dönüş türlerini @Dao yöntemlerini destekliyor. Desteklenen çoklu harita türleri Map, SparseArray, LongSparseArray ve Guava'nın ImmutableMap, ImmutableSetMultimap ve ImmutableListMultimap'dır.

Sürüm 2.4.0-rc01

1 Aralık 2021

androidx.room:room-*:2.4.0-rc01 iptal edilir. 2.4.0-rc01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Kotlin 1.6'yı desteklemek için Room'un KSP bağımlılığını 1.6.0-1.0.1 olarak güncelleyin.

Sürüm 2.4.0-beta02

17 Kasım 2021

androidx.room:room-*:2.4.0-beta02 iptal edilir. 2.4.0-beta02 sürümü şu commit'leri içerir.

Yeni Özellikler

Hata Düzeltmeleri

  • Türlerdeki nullability bilgilerini dikkate alan yeni bir TypeConverter analiz aracı ekledik. Bu bilgiler yalnızca KSP'de kullanılabildiğinden varsayılan olarak yalnızca KSP'de etkindir. Herhangi bir soruna neden olursa room.useNullAwareTypeAnalysis=false değerini ek açıklama işlemcisine ileterek devre dışı bırakabilirsiniz. Bu durumda, lütfen hata bildiriminde bulunun. Bu işaret gelecekte kaldırılacaktır. Bu yeni TypeConverter analiz aracıyla, yalnızca null olmayan alıcı TypeConverter'ların sağlanması önerilir. Yeni analiz aracı, bunları null denetimiyle sarmalayabilir. KAPT veya Java'yı ek açıklama işlemcileri olarak kullanan kullanıcılar için bu durumun herhangi bir etkisi olmadığını unutmayın (KSP'den farklı olarak türlerde nullability bilgisi yoktur). (Ia88f9, b/193437407)
  • ICU belirteç ayrıştırıcısını kullanmak üzere bildirilen bir FTS öğesi olduğunda Room'un SQL hatasıyla derlenememesi hatası düzeltildi. (I00db9, b/201753224)
  • Otomatik taşımalarda, sürümler arasında yerleştirilmiş bir öğeye yeni bir sütun eklenmesiyle ilgili sorun giderildi. (I5fcb1b/193798291)
  • LEFT JOIN sorgularındaki ilişkisel sorgu yöntemi dönüş türleriyle ilgili bir sorunu çözdük. Bu değişikliklerle birlikte, bire çok eşlemenin mevcut olduğu durumlarda, bir anahtar için döndürülen koleksiyon, imleçte bulunmuyorsa geçersiz değer nesnesini içermez. Geçerli değer bulunamazsa anahtar boş bir koleksiyonla eşlenir. (Id5552b/201946438)
  • SQLite anahtar kelimelerinin sütun adlarında kod dışına alınamamasına neden olan otomatik taşıma sorunu çözüldü. (Idbed4b/197133152)

Sürüm 2.4.0-beta01

13 Ekim 2021

androidx.room:room-*:2.4.0-beta01 iptal edilir. 2.4.0-beta01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Aynı otomatik taşıma işlemindeki başka bir tabloda da aynı ada sahip yeni bir sütun olduğunda otomatik taşıma işlemlerinin yeni sütun eklememesi sorunu düzeltildi. (Ia5db5, b/200818663)
  • room-paging tarafından oluşturulan PagingSource uygulaması artık RoomDatabase.Builder üzerinden iletilen queryExecutor değerini kullandığından, daha önce kullanılan Dispatchers.IO yerine geçersiz kılınabilir. (Iae259)

Sürüm 2.4.0-alpha05

29 Eylül 2021

androidx.room:room-*:2.4.0-alpha05 iptal edilir. 2.4.0-alpha05 sürümü şu commit'leri içerir.

Yeni Özellikler

API Değişiklikleri

  • Geliştiricilerin yerleşik Enum ve UUID dönüştürücülerini devre dışı bırakmasına olanak tanımak için TypeConverters ek açıklamasına yeni bir özellik eklendi. Bu dönüştürücüler varsayılan olarak etkindir ancak belirli bir kapsam veya tüm veritabanı için devre dışı bırakabilirsiniz. Ayrıntılar için TypeConverters belgelerine bakın. (36ae9e, b/195413406)

  • @MapInfo ek açıklaması aracılığıyla DAO'larda Multimap dönüş türleri için POJO olmayan anahtarları/değerleri destekleme. (I4d704)

Haritanın anahtar veya değer sütunu tek bir sütundan olduğunda @MapInfo gereklidir. Örneği inceleyin:

@MapInfo(valueColumn = "songCount")
@Query("""
       SELECT *, COUNT(mSongId) as songCount
       FROM Artist JOIN Song ON Artist.artistName = Song.artist
       GROUP BY artistName
       """)
fun getArtistAndSongCounts(): Map<Artist, Integer>
  • Room ile Paging3 kullanılırken room-paging öğesini zorunlu yapın. (Ieaffe)

Hata Düzeltmeleri

  • Sorgu, haritanın anahtarından bir sütunun ORDER BY ifadesini içerdiğinde çok haritalı sorgu sonuçlarının doğru şekilde sıralanmamasına neden olan sorun düzeltildi. (I6b887)

Harici Katkı (External Contribution)

  • @Index'te dizin sırasını belirtmek için yeni API eklendi. Nikita Zhelonkin'e teşekkür ederiz. (I033fc)

Sürüm 2.4.0-alpha04

21 Temmuz 2021

androidx.room:room-*:2.4.0-alpha04 iptal edilir. 2.4.0-alpha04 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Room artık JOIN ifadeleri için yararlı olan çoklu harita döndürme türlerini @Dao destekliyor. Desteklenen çoklu harita türleri, Guava'nın ImmutableMap, ImmutableSetMultimap ve ImmutableListMultimap ile birlikte Map'dır.

    Aşağıda, çoklu harita sorgularına dair örnekler verilmiştir:

    Bire Bir İlişki Haritası

    @Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId")
    fun getSongAndArtist(): Map<Song, Artist>
    

    Bire Çok İlişki Haritası (Standart çoklu harita)

    @Query("SELECT * FROM Artist JOIN Album ON Artist.id = Album.artistId")
    fun getArtistAndAlbums(): Map<Artist, List<Album>>
    

    Çoklu harita sonucu, LiveData, Rx'in Observable veya eş yordamlar Flow gibi desteklenen asenkron dönüş türlerine de sarmalanabilir.

Room-Paging

  • androidx.room:room-paging yayınlandı. Bu sürümde, androidx.paging.PagingSource döndüren Room sorguları için yerel Paging 3.0 desteği sunuluyor.

    @Dao
    interface UserDao {
      @Query("SELECT * FROM users ORDER BY id ASC")
      fun loadUsers(): PagingSource<Int, User>
    }
    
  • Bu yapay nesne, Room tarafından oluşturulan androidx.paging.PagingSource uygulamasının yerini Paging 3.0 API'leri üzerine kurulu bir uygulamayla değiştirir. Yeni PagingSource uygulaması anahtarları farklı şekilde ayrıştırır. Bu nedenle, Room'un PagingSource'una manuel olarak sağlanan tüm anahtarların, Pager'ın oluşturucusu aracılığıyla iletilen initialKey de dahil olmak üzere bu davranış değişikliğini hesaba katması gerekir. Sayfalar Key ile yüklenmeye başlar. Key, yüklenen ilk öğedir. Bu, LoadParams.Refresh.Key öğesinin kullanıcının kaydırma konumu olarak kabul edildiği ve öğelerin hem anahtardan önce hem de sonra yüklendiği mevcut davranıştan farklıdır.

  • Bu yapay nesne isteğe bağlıdır ve devre dışı bırakıldığında Room 2.3'te kullanıma sunulan Paging 3.0 için mevcut destek geri yüklenir. Ancak bu yapıt, gelecekteki sürümde Paging 3.0 ile Room kullananlar için zorunlu hale gelecektir. Özelliği etkinleştirmek için yeni oda çağrısı yapma yapısını sınıf yolunuza ekleyin. Gradle kullanıyorsanız aşağıdaki snippet'i build.gradle dosyanıza ekleyebilirsiniz:

    dependency {
      implementation("androidx.room:room-paging:2.4.0-alpha04")
    }
    

Hata Düzeltmeleri

  • Yabancı anahtar ihlallerinin işlenmesiyle ilgili otomatik taşıma sorununu düzeltir. (b/190113935)

Sürüm 2.4.0-alpha03

16 Haziran 2021

androidx.room:room-*:2.4.0-alpha03 iptal edilir. 2.4.0-alpha03 sürümünde şu commit'ler yer alıyor.

API Değişiklikleri

  • Test edilen veritabanı sınıfını alan yeni bir oluşturucu API sağlayarak Room'un MigrationTestHelper sürümünü otomatik taşımaları destekleyecek şekilde güncelleyin. Bu sayede yardımcı, runMigrationsAndValidate sırasında otomatik taşıma işlemlerini aynı şekilde otomatik olarak ekleyebilir.

Hata Düzeltmeleri

  • Apple'ın M1 çipini desteklemek için Room'un SQLite yerel kitaplığıyla ilgili sorun düzeltildi. (b/174695268

  • Bir @Transaction işlevinin dönüş türü Flow olduğunda Room'un hata vermemesine neden olan sorun düzeltildi (I56ddd, b/190075899).

  • Otomatik taşımalarda dizinlerle ilgili bir sorun düzeltildi. b/177673291

Bağımlılık Güncellemeleri

  • Room'un KSP desteği artık KSP'ye 1.5.10-1.0.0-beta01 bağlıdır. (1ecb11, b/160322705)

Sürüm 2.4.0-alpha02

5 Mayıs 2021

androidx.room:room-*:2.4.0-alpha02 iptal edilir. 2.4.0-alpha02 sürümünde bu commit'ler yer alıyor.

API Değişiklikleri

  • @ProvidedAutoMigrationSpec, AutoMigrationSpec öğesinin çalışma zamanında RoomDatabase.Builder#addAutoMigrationSpec() aracılığıyla sağlanacağını bildirmek için kullanılan yeni bir API'dir. Bu sayede, karmaşık bağımlılıklar gerektiğinde bu tür özellikleri sağlamak için bağımlılık ekleme çerçevesi kullanılabilir.

Hata Düzeltmeleri

  • Otomatik taşıma işlemlerinde @DatabaseView'ların düzgün şekilde yeniden oluşturulmamasına neden olan sorun düzeltildi.

Harici Katkı (External Contribution)

  • Room'daki JournalMode.TRUNCATE, InvalidationTracker geri çağırma işlevinin bazen geçersiz, çok geç veya hiç çağrılmamasına neden olan sorun düzeltildi. Uli Bubenheimer | bubenheimer@users.noreply.github.com'ya (b/154040286) teşekkür ederiz.

Sürüm 2.4.0-alpha01

21 Nisan 2021

androidx.room:room-*:2.4.0-alpha01 iptal edilir. 2.4.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Otomatik taşıma işlemleri: Room artık şemalar dışa aktarıldığı sürece taşıma işlemlerini otomatik olarak oluşturmak için bir API sunuyor. Room'a yeni bir mülk için otomatik taşıma oluşturması gerektiğini bildirmek üzere, otomatik taşıma işleminin yapılacağı sürümleri bildirmek için @Database#autoMigrations kullanılabilir. Room'un tablolar ve sütun yeniden adlandırmaları veya silmeleriyle ilgili ek bilgilere ihtiyacı olduğunda @AutoMigration ek açıklaması, bu tür girişleri içeren bir spesifikasyon sınıfı bildirebilir. Daha fazla ayrıntı için @AutoMigration belgelerini inceleyin.

Hata Düzeltmeleri

  • Fazladan parantez içeren defaultValue değerlerinin, oda şeması doğrulaması tarafından yanlış şekilde doğrulanmasına neden olan sorun düzeltildi. b/182284899

Sürüm 2.3.0

Sürüm 2.3.0

21 Nisan 2021

androidx.room:room-*:2.3.0 iptal edilir. 2.3.0 sürümü şu commit'leri içerir.

2.2.0 sürümünden beri yapılan önemli değişiklikler

  • Yerleşik Enum Desteği: Room, artık herhangi bir dönüştürücü sağlanmadığında varsayılan olarak Enum'dan String'e ve String'den Enum'a dönüştürücü kullanır. Bir enum için tür dönüştürücü zaten varsa Room, varsayılan yerine bunu kullanmaya öncelik verir.
  • Sorgu geri çağırması: Room artık sorgular yürütülmek üzereyken genel bir geri çağırma API'si olan RoomDatabase.QueryCallback'i sunuyor. Bu API, hata ayıklama derlemelerinde günlük kaydı için yararlı olabilir. Geri arama, RoomDatabase.Builder#setQueryCallback() üzerinden ayarlanabilir.
  • Önceden Paketlenmiş İyileştirme: Room artık bir giriş akışından okunan önceden paketlenmiş bir veritabanı kullanılarak veritabanı oluşturmaya yönelik API'lere sahip. Bu, önceden paketlenmiş veritabanının gzip ile sıkıştırıldığı durumlar için geçerlidir.
  • Sağlanan Tür Dönüştürücüler: Room artık tür dönüştürücü örnekleri sağlamak için API'lere sahip. Böylece uygulama, bunların başlatılmasını kontrol edebilir. Room'a sağlanacak bir tür dönüştürücüyü işaretlemek için yeni @ProvidedTypeConverter ek açıklamasını kullanın.
  • RxJava3 desteği: Room artık RxJava3 türlerini destekliyor. RxJava2'ye benzer şekilde, dönüş türü Flowable, Single, Maybe ve Completable olan DAO yöntemleri bildirebilirsiniz. Ayrıca RxJava3'ü desteklemek için yeni bir yapay nesne androidx.room:room-rxjava3 kullanıma sunuldu.
  • Paging 3.0 desteği: Room artık dönüş türü androidx.paging.PagingSource olan @Query ek açıklamalı yöntemler için uygulamalar oluşturmayı destekleyecek.

Sürüm 2.3.0-rc01

24 Mart 2021

androidx.room:room-*:2.3.0-rc01 iptal edilir. 2.3.0-rc01 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Room tarafından oluşturulan Coroutine Flow sorgularının askıya alma withTransaction bloğunda tüketilmesini engelleyen sorun düzeltildi. (I797bf)

Sürüm 2.3.0-beta03

10 Mart 2021

androidx.room:room-*:2.3.0-beta03 iptal edilir. 2.3.0-beta03 sürümü şu commit'leri içerir.

Yeni Özellikler

Hata Düzeltmeleri

  • Ana iş parçacığında PagingSource oluşturmanın ANR'yi tetikleyebildiği hata düzeltildi. (I42b74, b/181221318)
  • @ExperimentalRoomApi görünürlüğü, paket gizli yerine herkese açık olarak düzeltildi. (b/181356119)

Harici Katkı (External Contribution)

  • @Query ile ek açıklama eklenmiş bir DAO yönteminde @SkipQueryVerification ile de ek açıklama eklenmişse Room'un POJO dönüş türünü kabul etmesine izin verin. Room, sorgunun sonucunu @RawQuery ek açıklamalı bir DAO yöntemi için yapıldığı şekilde POJO dönüş türüne dönüştürmek için elinden geleni yapar. "Markus Riegel | hey@marcorei.com" adresine teşekkür ederiz. (I45acb)

Sürüm 2.3.0-beta02

18 Şubat 2021

androidx.room:room-*:2.3.0-beta02 iptal edilir. 2.3.0-beta02 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Room artık Kotlin Sembol İşleme KSP için deneysel destek sunuyor.

    KSP, Kotlin derleyicisinde ek açıklama işlemcilerini yerel olarak çalıştırmak için KAPT'nin yerine geçen ve derleme sürelerini önemli ölçüde azaltan bir araçtır.

    Room'u KSP ile kullanmak için KSP Gradle eklentisini uygulayabilir ve derleme dosyanızdaki kapt yapılandırmasını ksp ile değiştirebilirsiniz. Örneğin, kapt 'androidx.room:room-compiler:2.3.0-beta02' yerine ksp 'androidx.room:room-compiler:2.3.0-beta02' kullanın. Daha fazla ayrıntı için KSP belgelerini inceleyin.

    KSP deneysel bir özellik olduğundan üretim kodu için KAPT'nin kullanılmaya devam edilmesi önerilir. Derleme sürelerinin kısaltılması yalnızca KAPT'yi kullanan başka işlemciler yoksa geçerlidir. Bilinen sorunlar için b/160322705 sayfasına bakın.

Sürüm 2.3.0-beta01

27 Ocak 2021

androidx.room:room-*:2.3.0-beta01 iptal edilir. 2.3.0-beta01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Otomatik Kapatılabilen Veritabanları: Room artık belirli bir süre boyunca erişilmeyen veritabanlarını kapatabilir. Bu deneysel bir özelliktir ve RoomDatabase.Builder#setAutoCloseTimeout() numarası aranarak etkinleştirilebilir. Bu özellik, birden fazla veritabanı olan uygulamalar için yararlıdır.

Hata Düzeltmeleri

  • Farklı çakışma stratejilerine sahip birden fazla @Update veya @Delete yöntemi içeren Dao yöntemlerinin, tanımlananı etkili bir şekilde yok sayarak yalnızca stratejilerden biriyle kod oluşturmasına neden olan sorun düzeltildi. (/I0b90d, b/176138543)

Sürüm 2.3.0-alpha04

16 Aralık 2020

androidx.room:room-*:2.3.0-alpha04 iptal edilir. 2.3.0-alpha04 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Room artık sorgular yürütülmek üzereyken genel bir geri çağırma API'si RoomDatabase.QueryCallback sunuyor. Bu API, hata ayıklama derlemelerinde günlük kaydı için yararlı olabilir. Geri arama, RoomDatabase.Builder#setQueryCallback() üzerinden ayarlanabilir. (Iaa513, b/174478034, b/74877608)
  • Artık oda, herhangi bir dönüştürücü sağlanmadığında varsayılan olarak Enum'dan String'e ve String'den Enum'a tür dönüştürücüyü kullanacak. Bir enum için tür dönüştürücü zaten varsa Room, varsayılan yerine bunu kullanmaya öncelik verir. (b/73132006)

Bilinen Sorun

  • Enum için okuma amaçlı tek yönlü bir tür dönüştürücü zaten varsa Room, istenmeyebilecek yerleşik String to Enum dönüştürücüsünü yanlışlıkla kullanabilir. Bu bilinen bir sorundur ve iki yönlü dönüştürücü yapılarak düzeltilebilir. Bkz: b/175707691

Hata Düzeltmeleri

  • Room'un daha yeni JDK sürümlerinde artımlı ek açıklama işlemeyi yanlışlıkla devre dışı bırakmasına neden olan sorun düzeltildi. (b/171387388)
  • Birden fazla sınıf yükleyici kullanıldığında Room'un oluşturulan sınıfı bulmasıyla ilgili sorun düzeltildi. "Serendipity | 892449346@qq.com" düzeltmesi için teşekkürler! (b/170141113)
  • Room'un, Kotlin @Dao'nin JVM'de temel sınıfı olan ve genel türleri ilkel olan bir kod oluştururken yanlış kod üretmesine neden olan sorun düzeltildi. (b/160258066)

Harici Katkı (External Contribution)

  • WAL modu etkinse ve API 16 veya daha yüksekse Room artık varsayılan olarak beginTransactionNonExclusive kullanır. Ahmed I. Khalil | ahmedibrahimkhali@gmail.com’! (b/126258791)

Sürüm 2.3.0-alpha03

14 Ekim 2020

androidx.room:room-*:2.3.0-alpha03 iptal edilir. 2.3.0-alpha03 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Room artık, uygulamanın başlatmalarını kontrol edebilmesi için tür dönüştürücü örnekleri sağlayan API'lere sahip. Room'a sağlanacak bir tür dönüştürücüyü işaretlemek için yeni @ProvidedTypeConverter ek açıklamasını kullanın. "mzgreen yairobbe@gmail.com" adlı kullanıcıya teşekkür ederiz. (Ie4fa5, b/121067210)

  • Room artık bir giriş akışından okunan önceden paketlenmiş bir veritabanını kullanarak veritabanı oluşturmaya yönelik API'ler içeriyor. Bu, önceden paketlenmiş veritabanının gzip ile sıkıştırıldığı durumlar için geçerlidir. "Ahmed El-Helw ahmedre@gmail.com"a (3e6792, b/146911060) teşekkür ederiz.

API Değişiklikleri

  • @ForeignKey ek açıklamasına eksik hedef eklendi. Bu sayede, @ForeignKey ek açıklamasının @Entity ek açıklaması dışında kullanılması önlendi. (Iced1e)

  • RoomDatabase.java içindeki mCallbacks alanı artık gizli. (d576cb, b/76109329)

Hata Düzeltmeleri

  • TypeConverter'ların yalnızca sütunları / alanları dönüştürmek için kullanılabileceğini, satırları dönüştürmek için kullanılamayacağını netleştirmek amacıyla TypeConverter belgelerinde güncelleme yapıldı. (I07c56, b/77307836)

  • Kotlin "primitive" ile genel bir üst türe sahip Dao'da derleyici hatasını düzeltmek için DaoProcessor'da güncelleme yapıldı. (Ice6bb, b/160258066)

  • İş parçacığını netleştirmek için gözlemci ekleme/kaldırma yöntemleri dokümanlarını güncelleme (Ifd1d9, b/153948821)

  • Room'un, rowid sütununu bildiren FTS tablolarını yanlış şekilde doğrulamasından kaynaklanan sorun düzeltildi. (d62ebc, b/145858914)

Harici Katkılar

  • Türkçe ile ilgili büyük/küçük harf yerel ayar sorunlarını düzeltme (5746e3), b/68159494

  • Android Lollipop'ta sorun yaşamamak için RoomDatabase içindeki ConcurrentHashMap simgesini Collections.synchronizedMap() ile değiştirin (d1cfc7, b/162431855)

  • Önceden paketlenmiş bir veritabanı kopyalandığında onOpenPrepackagedDatabase geri çağırmasını ekleyin. (I1ba74, b/148934423)

Sürüm 2.3.0-alpha02

22 Temmuz 2020

androidx.room:room-*:2.3.0-alpha02 iptal edilir. 2.3.0-alpha02 sürümü şu commit'leri içerir.

Yeni Özellikler

  • RxJava3 desteği: Room artık RxJava3 türlerini destekliyor. RxJava2'ye benzer şekilde, dönüş türü Flowable, Single, Maybe ve Completable olan DAO yöntemleri bildirebilirsiniz. Ayrıca RxJava3'ü desteklemek için yeni bir yapay nesne androidx.room:room-rxjava3 kullanıma sunuldu. (b/152427884)

API Değişiklikleri

  • Kotlin Object sınıfında @TypeConverter bildirme artık destekleniyor. (b/151110764)
  • Room Artımlı açıklama işleme seçeneği artık varsayılan olarak ETKİN. (b/112110217)

Sürüm 2.3.0-alpha01

10 Haziran 2020

androidx.room:room-*:2.3.0-alpha01 iptal edilir. 2.3.0-alpha01 sürümü şu commit'leri içerir.

Yeni Özellikler

  • Paging 3.0 desteği: Room artık dönüş türü androidx.paging.PagingSource olan @Query ek açıklamalı yöntemler için uygulamalar oluşturmayı destekleyecek.

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

API Değişiklikleri

  • @RewriteQueriesToDropUnusedColumns, Room'un sorgudaki "*" projeksiyonunu, sonuçtaki kullanılmayan sütunlar kaldırılacak şekilde yeniden yazmasını sağlayan yeni ve kullanışlı bir ek açıklamadır.
  • room.expandProjection işlemci seçeneğinin desteği sonlandırıldı. @RewriteQueriesToDropUnusedColumns, yıldız projeksiyonlu oda optimizasyonu sorgularının yerine kullanılabilir. @RewriteQueriesToDropUnusedColumns, @Embedded alanları içeren dönüş türleriyle ilgili olarak sunulan sütun çakışması çözümünün room.expandProjection yerini almaz.

Hata Düzeltmeleri

  • Room'un, artımlı ek açıklama işlemcisini etkinleştirmek için kullanılan JDK sürümünü doğru şekilde algılamamasına neden olan hata düzeltildi. Blaz Solar'a (me@blaz.solar) teşekkür ederiz (b/155215201).
  • Room, ANTLR'yi kullanan diğer işlemcilerle sürüm çakışmalarını önlemek için ANTLR bağımlılığını ek açıklama işlemcisine yerleştirir. (b/150106190)

Sürüm 2.2.6

Sürüm 2.2.6

16 Aralık 2020

androidx.room:room-*:2.2.6 iptal edilir. 2.2.6 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • Room'un daha yeni JDK sürümlerinde artımlı ek açıklama işlemeyi yanlışlıkla devre dışı bırakmasına neden olan sorun düzeltildi. (b/171387388)

Sürüm 2.2.5

Sürüm 2.2.5

18 Mart 2020

androidx.room:room-*:2.2.5 iptal edilir. 2.2.5 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • MultiInstanceInvalidationService directBootAware olarak ayarlayın. "Mygod contact-git@mygod.be" (b/148240967) kullanıcısına teşekkür ederiz.
  • Çoklu örnek geçersiz kılma etkinleştirildiğinde ve veritabanında FTS varlığı bulunduğunda kilitlenmeye neden olan hata düzeltildi. (b/148969394)
  • Room ek açıklama işlemcisinde SQLite yerel kitaplıkları yüklenirken derleyicinin paralel derlemeler nedeniyle kilitlenmesine neden olan sorun düzeltildi. (b/146217083)

Sürüm 2.2.4

Sürüm 2.2.4

19 Şubat 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 ve androidx.room:room-testing:2.2.4 yayınlanır. 2.2.4 sürümü şu commit'leri içerir.

Hata Düzeltmeleri

  • İşlem gerçekten başlamadan önce eşzamanlı yordam hızlıca iptal edilirse işlemlerin kilitlenmesine neden olan askıya alma işlemiyle ilgili sorun düzeltildi. (b/148181325)
  • JDK 9 ile derleme yapılırken @Generated'ın yanlış kullanılmasıyla ilgili sorun düzeltildi. (b/146538330)
  • Kotlin'deki bir DAO arayüzünde somut bir işlev olduğunda Room'un yanlış kod oluşturmasına neden olan sorun düzeltildi. (b/146825845)

Sürüm 2.2.3

Sürüm 2.2.3

18 Aralık 2019

androidx.room:room-*:2.2.3 iptal edilir. 2.2.3 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Room'un, herhangi bir taşıma işleminden geçmemiş ve şemasında dizinler içeren eski bir karma bulunduran veritabanını doğrulayamamasına neden olan hata düzeltildi. (b/139306173)

Sürüm 2.2.2

Sürüm 2.2.2

20 Kasım 2019

androidx.room:room-*:2.2.2 iptal edilir. 2.2.2 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • 999'dan fazla satır içeren bire bir ilişki toplanırken Room'un null değerini döndürmesine neden olan hata düzeltildi. (b/143105450)

Sürüm 2.2.1

Sürüm 2.2.1

23 Ekim 2019

androidx.room:room-*:2.2.1 iptal edilir. 2.2.1 sürümü şu commit'leri içerir.

Hata düzeltmeleri

  • Room'un, derleyici seçeneği expandProjection AÇIK iken CURSOR_MISMATCH hakkında yanlış uyarı vermesine neden olan hata düzeltildi. (b/140759491)
  • Derleme sırasında sorguları doğrulamak için kullanılan eksik yerel kitaplığı işlemek üzere yeniden deneme mekanizması eklendi.

Sürüm 2.2.0

Sürüm 2.2.0

9 Ekim 2019

androidx.room:room-*:2.2.0 iptal edilir. 2.2.0 sürümü şu commit'leri içerir.

2.1.0 sürümünden beri yapılan önemli değişiklikler

  • Önceden Paketlenmiş Veritabanı: RoomDatabase.Builder içinde iki yeni API, önceden doldurulmuş bir veritabanı dosyası verildiğinde RoomDatabase oluşturmak için kullanılabilir. createFromAsset(), önceden doldurulmuş veritabanı dosyası APK'nın öğeler klasöründeyken, createFromFile() ise dosya rastgele bir konumdayken kullanılır. Bu API'lerin kullanımları, yıkıcı taşıma işlemlerinin davranışını değiştirir. Bu nedenle, geri dönüş taşıma işlemi sırasında Room, önceden doldurulmuş veritabanını varsa yeniden kopyalamaya çalışır. Aksi takdirde, yalnızca tüm tabloları bırakıp yeniden oluşturmaya geri döner. b/62185732
  • Şema Varsayılan Değerleri: @ColumnInfo artık bir sütunun varsayılan değerini belirtmek için kullanılabilecek yeni bir defaultValue özelliğine sahip. Varsayılan değerler, bir veritabanı şemasının parçasıdır ve belirtilmesi durumunda taşıma sırasında doğrulanır. b/64088772
  • Çoktan Çoka İlişkiler: @Relation artık associateBy adlı yeni bir özelliğe sahip. Bu özellik, bir bağlantı tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gereken bir ilişkiyi bildirmek için kullanılan yeni bir @Junction ek açıklaması alıyor. b/69201917
  • Bire Bir İlişkiler: @Relation ile açıklama eklenmiş POJO alanlarındaki List veya Set türünde olma kısıtlaması kaldırıldı. Bu sayede, tek değerli ilişkilerin gösterilmesine olanak tanındı. b/62905145
  • Hedef Varlık: DAO açıklamaları @Insert, @Update ve @Delete artık targetEntity adlı yeni bir özelliğe sahip. Bu özellik, DAO yönteminin üzerinde çalışması gereken hedef tablonun belirtilmesine olanak tanır. Bu, söz konusu DAO yöntemlerinin parametrelerinin, kısmi varlıklar olarak yorumlanacak rastgele POJO'lar olmasına olanak tanır. Bu, uygulamada kısmi ekleme, silme ve güncelleme işlemlerine olanak tanır. b/127549506
  • Eş yordam akışı: @Query DAO yöntemleri artık Flow<T> dönüş türünde olabilir. Döndürülen akış, sorgudaki gözlemlenen tablolar geçersiz kılınırsa yeni bir değer grubu yeniden yayınlar. Channel<T> dönüş türüyle bir DAO işlevi bildirmek hatadır. Bunun yerine Room, Flow kullanmanızı ve ardından Flow değerini Channel değerine dönüştürmek için komşu işlevleri kullanmanızı önerir. b/130428884
  • Gradle Artımlı Ek Açıklama İşlemcisi: Room artık Gradle'ı yalıtan bir ek açıklama işlemcisidir ve artımlılık, işlemci seçeneği room.incremental ile etkinleştirilebilir. Daha fazla bilgi için Room Derleyici Seçenekleri başlıklı makaleyi inceleyin. Herhangi bir sorunla karşılaşırsanız lütfen buradan hata bildiriminde bulunun. Gelecekteki kararlı bir sürümde artırılabilirliği varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217
  • Genişletilmiş Projeksiyonlar: Room'un, yıldız projeksiyonlu bir sorguyu yalnızca döndürülen türdeki POJO'da bulunan sütunları içerecek şekilde yeniden yazmasına neden olan yeni bir deneysel derleyici seçeneği room.expandProjection eklendi. Örneğin, yalnızca iki alanı olan SongIdAndTitle adlı bir POJO döndüren @Query("SELECT * FROM Song") ile bir DAO yöntemi için. Ardından Room, sorguyu SELECT id, title FROM Song olarak yeniden yazar. Böylece, döndürülen türü karşılamak için gereken minimum sütun grubu getirilir. Bu, sorgu, döndürülen POJO türündeki herhangi bir alanla eşleşmeyen ek sütunlar döndürdüğünde gösterilen CURSOR_MISMATCH uyarısını tamamen ortadan kaldırır.

Sürüm 2.2.0-rc01

5 Eylül 2019

androidx.room:room:2.2.0-rc01 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Oda 2.2.0-beta01'dan beri herkese açık değişiklik yapılmadı.

Sürüm 2.2.0-beta01

22 Ağustos 2019

androidx.room:room-*:2.2.0-beta01 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Hata düzeltmeleri

  • Coroutine Flow sorgusunun belirli bir süre sonra yeni değerler yayınlamayı durdurmasına neden olan hata düzeltildi. (b/139175786)
  • Room 1.0'dan beri taşıma işlemi yapılmamış bir veritabanı açılırken Room'un eski şema karma kodunu kabul etmemesi nedeniyle geçersiz şemadan kaynaklanan çalışma zamanı kilitlenmesi sorunu düzeltildi. (b/139306173)

Sürüm 2.2.0-alpha02

7 Ağustos 2019

androidx.room:room-*:2.2.0-alpha02 iptal edilir. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Yeni Özellikler

  • Eş yordam akışı: @Query DAO yöntemleri artık Flow<T> dönüş türünde olabilir. Döndürülen akış, sorgudaki gözlemlenen tablolar geçersiz kılınırsa yeni bir değer grubu yeniden yayınlar. Channel<T> dönüş türüyle bir DAO işlevi bildirmek hatadır. Bunun yerine Room, Flow kullanmanızı ve ardından Flow değerini Channel değerine dönüştürmek için komşu işlevleri kullanmanızı önerir. b/130428884
  • Genişletilmiş Projeksiyonlar: Room'un, yıldız projeksiyonlu bir sorguyu yalnızca döndürülen türdeki POJO'da bulunan sütunları içerecek şekilde yeniden yazmasına neden olan yeni bir deneysel derleyici seçeneği room.expandProjection eklendi. Örneğin, yalnızca iki alanı olan SongIdAndTitle adlı bir POJO döndüren @Query("SELECT * FROM Song") ile bir DAO yöntemi için. Ardından Room, sorguyu SELECT id, title FROM Song olarak yeniden yazar. Böylece, döndürülen türü karşılamak için gereken minimum sütun grubu getirilir. Bu, sorgu, döndürülen POJO türündeki herhangi bir alanla eşleşmeyen ek sütunlar döndürdüğünde gösterilen CURSOR_MISMATCH uyarısını tamamen ortadan kaldırır.
  • onDestructiveMigrate, Room'un bir veritabanını yıkıcı bir şekilde taşıdığı zamanlar için RoomDatabase.Callback'e eklenen yeni bir geri çağırma API'sidir. b/79962330

Hata Düzeltmeleri

  • Alan korunduğunda Room'un alan ayarlayıcı olarak bir yöntem kullanarak yanlış kod oluşturmasına neden olan hata düzeltildi. b/136194628
  • Çoklu örnek geçersiz kılma etkinleştirildiğinde ve geçersiz kılma hizmeti sonlandırıldığında InvalidationTracker'ın ikinci bir işlemde NPE'ye neden olan hata düzeltildi. b/137454915
  • Room'un, @RawQuery ile açıklama eklenmiş devralınan bir askıya alma işlevinin dönüş türünü doğru şekilde tanımlamamasına neden olan hata düzeltildi. b/137878827
  • İlişkilendirme anahtarı BLOB türündeyken @Relation için oluşturulan kod, karşılaştırılabilir bir ByteBuffer kullanacak şekilde güncellendi. b/137881998
  • Room'un, @Insert, @Update ve @Delete'nin kısmi öğe parametreleri olarak kullanılan POJO'larda ayarlayıcıların eksik olmasıyla ilgili hata vermesine neden olan hata düzeltildi. b/138664463
  • Varlık sınıfı belirli DAO yöntemlerinde kullanıldığında Room'un @Entity aracılığıyla yoksayılan bir sütun için getter ve setter'ların eksik olduğunu bildirmesine neden olan hata düzeltildi. b/138238182
  • Room'un, adlandırılmış bağlama bağımsız değişkenlerini konumsal bağımsız değişkenlere doğru şekilde dönüştürmemesi nedeniyle, yeniden kullanılan parametrelerle sorgu yürütülürken çalışma zamanı istisnasına neden olan hata düzeltildi. b/137254857

Sürüm 2.2.0-alpha01

10 Temmuz 2019

Yeni Özellikler

  • Önceden Paketlenmiş Veritabanı: RoomDatabase.Builder içinde iki yeni API, önceden doldurulmuş bir veritabanı dosyası verildiğinde RoomDatabase oluşturmak için kullanılabilir. createFromAsset(), önceden doldurulmuş veritabanı dosyası APK'nın öğeler klasöründeyken, createFromFile() ise dosya rastgele bir konumdayken kullanılır. Bu API'lerin kullanımları, yıkıcı taşıma işlemlerinin davranışını değiştirir. Bu nedenle, geri dönüş taşıma işlemi sırasında Room, önceden doldurulmuş veritabanını varsa yeniden kopyalamaya çalışır. Aksi takdirde, yalnızca tüm tabloları bırakıp yeniden oluşturmaya geri döner. b/62185732
  • Şema Varsayılan Değerleri: @ColumnInfo artık bir sütunun varsayılan değerini belirtmek için kullanılabilecek yeni bir defaultValue özelliğine sahip. Varsayılan değerler, bir veritabanı şemasının parçasıdır ve belirtilmesi durumunda taşıma sırasında doğrulanır. b/64088772

    Not: Veritabanı şemanızda ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z aracılığıyla eklenenler gibi varsayılan değerler varsa ve aynı sütunlara @ColumnInfo aracılığıyla varsayılan değerler tanımlamaya karar verirseniz hesaba katılmayan varsayılan değerleri doğrulamak için bir taşıma işlemi sağlamanız gerekebilir. Daha fazla bilgi için Oda Taşıma İşlemleri başlıklı makaleyi inceleyin.

  • Çoktan Çoka İlişkiler: @Relation artık associateBy adlı yeni bir özelliğe sahip. Bu özellik, bir bağlantı tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gereken bir ilişkiyi bildirmek için kullanılan yeni bir @Junction ek açıklaması alıyor. b/69201917
  • Bire Bir İlişkiler: @Relation ile açıklama eklenmiş POJO alanlarındaki List veya Set türünde olma kısıtlaması kaldırıldı. Bu sayede, tek değerli ilişkilerin gösterilmesine olanak tanındı. b/62905145
  • Hedef Varlık: DAO açıklamaları @Insert, @Update ve @Delete artık targetEntity adlı yeni bir özelliğe sahip. Bu özellik, DAO yönteminin üzerinde çalışması gereken hedef tablonun belirtilmesine olanak tanır. Bu, söz konusu DAO yöntemlerinin parametrelerinin, kısmi varlıklar olarak yorumlanacak rastgele POJO'lar olmasına olanak tanır. Bu, uygulamada kısmi ekleme, silme ve güncelleme işlemlerine olanak tanır. b/127549506
  • Gradle Artımlı Ek Açıklama İşlemcisi: Room artık Gradle'ı yalıtan bir ek açıklama işlemcisidir ve artımlılık, işlemci seçeneği room.incremental ile etkinleştirilebilir. Daha fazla bilgi için Room Derleyici Seçenekleri başlıklı makaleyi inceleyin. Herhangi bir sorunla karşılaşırsanız lütfen buradan hata bildiriminde bulunun. Gelecekteki kararlı bir sürümde artırılabilirliği varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217

Hata Düzeltmeleri

  • Bir sorgunun Rx akışı, sorgu tamamlanmadan önce kaldırıldığında Room artık EmptySetResultException değerini genel hata işleyiciye yaymayacak. b/130257475
  • @RawQuery ile açıklama eklenmiş bir suspend DAO işlevinin dönüş türü olmadığında Room'un yanlış bir hata mesajı göstermesine neden olan hata düzeltildi. b/134303897
  • Room artık ham türlerle DAO bağdaştırıcıları oluşturmayacak. b/135747255

Sürüm 2.1.0

Sürüm 2.1.0

13 Haziran 2019

Room 2.1.0, 2.1.0-rc01 sürümünde herhangi bir değişiklik yapılmadan yayınlandı. Sürüme dahil edilen commit'leri burada bulabilirsiniz.

2.0.0 sürümünden beri yapılan önemli değişiklikler

  • FTS: Room artık FTS3 veya FTS4 tablosuyla eşleme içeren varlıkları destekliyor. @Entity ile açıklama eklenen sınıflara artık @Fts3 veya @Fts4 ile ek açıklama eklenerek eşleme tam metin arama tablosu içeren bir sınıf bildirilebilir. Daha fazla özelleştirme için FTS seçenekleri, açıklama yöntemleriyle kullanılabilir.
  • Görünümler: Room artık @DatabaseView ek açıklamasını kullanarak bir sınıfı görünüm olarak da bilinen depolanmış sorgu olarak bildirmeyi destekliyor.
  • Couroutines: DAO yöntemleri artık askıya alınabilir işlevler olabilir. Bu işlevden yararlanmak için bağımlılıklarınıza room-ktx ekleyin. ktx yapısı, eş yordam içinde veritabanı işlemleri gerçekleştirmek için RoomDatabase.withTransaction uzantı işlevini de sağlar.
  • Auto Value: Room artık AutoValue ek açıklamalı sınıfların varlık ve POJO olarak bildirilmesini destekliyor. Oda ek açıklamaları @PrimaryKey, @ColumnInfo, @Embedded ve @Relation artık otomatik değer ek açıklamalı bir sınıfın soyut yöntemlerinde bildirilebilir. Room'un bu notları doğru şekilde anlayabilmesi için @CopyAnnotations ile birlikte kullanılması gerektiğini unutmayın.
  • Ek Asenkron Destek: @Insert, @Delete veya @Update ile açıklama eklenmiş DAO yöntemleri, INSERT, DELETE veya UPDATE ifadelerini içeren @Query ile birlikte artık Rx dönüş türlerini (Completable, Single, Maybe) ve Guava'nın dönüş türünü (ListenableFuture) destekliyor. Ayrıca, askıya alma işlevleri de olabilirler.
  • enableMultiInstanceInvalidation, aynı veritabanı dosyası kullanılarak RoomDatabase'in birden fazla örneğinde geçersiz kılmayı etkinleştirmek için RoomDatabase.Builder'deki yeni bir API'dir.
  • fallbackToDestructiveMigrationOnDowngrade, sürüm düşürme işlemi gerçekleşirse veritabanını otomatik olarak yeniden oluşturmak için RoomDatabase.Builder'deki yeni bir API'dir.
  • ignoredColumns, @Entity açıklamasında bulunan ve yoksayılan alanları ada göre listelemek için kullanılabilen yeni bir API'dir.
  • Room artık veri sınıflarında Kotlin'in birincil oluşturucusunu doğru şekilde kullanacak ve özelliklerin vars olarak bildirilmesine gerek kalmayacak.

Sürüm 2.1.0-rc01

29 Mayıs 2019

Hata Düzeltmeleri

  • Önceden ayarlanmış bir temp_store yapılandırması nedeniyle oluşabilecek bir oda başlatma hatası düzeltildi. b/132602198
  • SQLite 3.27.0 ve sonraki sürümlerini kullananlar için çift tırnak kullanımıyla ilgili uyarı düzeltildi. b/131712640
  • InvalidationTracker'ın, birden fazla geçersiz kılma kontrolü paralel olarak gerçekleştiğinde kilitlenmeye neden olduğu hata düzeltildi. b/133457594

Sürüm 2.1.0-beta01

7 Mayıs 2019

androidx.room 2.1.0-beta01, 2.1.0-alpha07 sürümüne kıyasla herhangi bir değişiklik yapılmadan yayınlandı. Bu sürüme dahil edilen commit'leri burada bulabilirsiniz.

Sürüm 2.1.0-alpha07

25 Nisan 2019

API/Davranış Değişiklikleri (API/Behavior Changes)

  • RoomDatabase.withTransaction uzantı işlevi, alıcı olarak CoroutineScope içeren bir işlev bloğu almayacak şekilde değiştirildi. Bu, işlemleri işlem bloğunda eşzamanlı olarak çalıştırmak için gereken ek coroutineScope { } sarmalayıcının atlanmasını önler.

Hata Düzeltmeleri

  • Room'un, Collection türünde bir parametre içeren Kotlin DAO işlevi için bir TypeConverter ile eşleşememesine neden olan hata düzeltildi. b/122066791

Sürüm 2.1.0-alpha06

22 Mart 2019

API/Davranış Değişiklikleri (API/Behavior Changes)

  • Eşzamansız işlem sorguları artık seri hale getirildi. Bu sayede Room, veritabanı işlemlerini yürütmek için birden fazla iş parçacığı kullanmayacak. İşlemler için kullanılacak yürütücünün yapılandırılmasına olanak tanımak üzere RoomDatabase.Builder.setTransactionExecutor(Executor) eklendi.
  • RoomDatabase.runInTransaction(Callable) artık işaretli istisnaları RuntimeException'lara sarmayacak. b/128623748

Hata Düzeltmeleri

  • Hem içerik tablosu hem de harici içerik FTS tablosu için gözlemciler eklendiğinde geçersiz kılma izleyicinin içerik tablosunu gözlemlemeyi durdurmasına neden olan hata düzeltildi. b/128508917
  • RoomSQLite 3.24.0 ile eşleşecek şekilde SQLite grameri güncellendi. b/110883668

Sürüm 2.1.0-alpha05

13 Mart 2019

Yeni Özellikler

  • Uzantı işlevi RoomDatabase.withTransaction, eş yordam içinde güvenli bir şekilde veritabanı işlemleri gerçekleştirmenize olanak tanır. Oda uzantıları işlevleri ve eş yordam desteği room-ktx yapısında mevcuttur.
  • @Transaction ile açıklama eklenmiş soyut olmayan DAO yöntemleri artık askıya alma işlevleri olabilir. b/120241587

API/Davranış Değişiklikleri (API/Behavior Changes)

  • Yapı room-coroutines, diğer androidx yapılarıyla aynı adlandırma kuralı kullanılarak room-ktx olarak yeniden adlandırıldı.
  • RoomDatabase içindeki beginTransaction, setTransactionSuccessful ve endTransaction, runInTransaction ve room-ktx uzantı işlevi withTransaction lehine kullanımdan kaldırıldı.

Hata Düzeltmeleri

  • Kullanılan belirteçleyici SIMPLE ise belirteçleyici bağımsız değişkenlerinin bırakılmasına neden olan hata düzeltildi. b/125427014
  • Room'un, türü iç sınıf olan parametrelerle askıya alma işlevlerini doğru şekilde tanımlayamamasına neden olan hata düzeltildi. b/123767877
  • @Query, UPDATE veya DELETE ifadeleri içeren ertelenmiş INSERT DAO yönteminin sorguyu ana iş parçacığında hemen hazırlamasına neden olan hata düzeltildi. b/123695593
  • Room'un belirli askıya alma işlevleri için yanlış kod oluşturmasına neden olan çeşitli hatalar düzeltildi. b/123466702 ve b/123457323
  • Oluşturulan kodda, yöntemlerin kullanımının kullanımdan kaldırılmış olması durumunda doğru şekilde bastırılmamasına neden olan hata düzeltildi. b/117602586
  • androidx.sqlite'ın Room bağımlılığı, bozuk veritabanlarının doğru şekilde işlenmesiyle ilgili düzeltmeleri içeren 1.0.2 sürümüne güncellendi. b/124476912

Bilinen Sorunlar

  • Room 2.1.0-alpha05, şu anda Maven Central'da bulunmayan kotlinx-metadata-jvm yapay nesnesine bağlıdır (KT-27991). Bu bağımlılık, proje depolarınıza maven { url "https://kotlin.bintray.com/kotlinx/" } eklenerek çözülebilir.

Sürüm 2.1.0-alpha04

25 Ocak 2019

Yeni Özellikler

  • @Query ile açıklama eklenmiş ve INSERT, UPDATE veya DELETE ifadelerini içeren DAO yöntemleri artık Single, Mayble, Completable ve ListenableFuture gibi asenkron türleri döndürebilir. Ayrıca, işlevler askıya da alınabilir. b/120227284

API/Davranış Değişiklikleri (API/Behavior Changes)

  • Room, @Transaction ile açıklama eklenmiş soyut olmayan bir DAO yöntemi Single, Mayble, Completable, LiveData veya ListenableFuture gibi bir asenkron tür döndürürse artık hata verecek. İşlemler iş parçacığıyla sınırlı olduğundan, Room'un farklı iş parçacıklarında sorgu gerçekleştirebilecek bir işlev etrafında işlem başlatıp sonlandırması şu anda mümkün değildir. b/120109336
  • OnConflictStrategy.FAIL ve OnConflictStrategy.ROLLBACK, Android'in mevcut SQLite bağlamalarıyla beklendiği gibi çalışmadığı için @Deprecated olarak işaretlendi. b/117266738

Hata Düzeltmeleri

  • DAO yöntemi bir askıya alma işlevi olduğunda Room'un, dönüş türünün TypeConverter'ını doğru şekilde kullanmaması hatası düzeltildi. b/122988159
  • Room'un devralınan askıya alma işlevlerini yanlışlıkla askıya alma işlevi olmayan olarak tanımlamasına neden olan hata düzeltildi. b/122902595
  • Bir @Embedded alanı üst sınıfta olduğunda ve birden fazla alt sınıfta kullanıldığında Room'un yanlış kod oluşturmasına neden olan hata düzeltildi. b/121099048
  • Bir beginTransaction() ile endTransaction() arasında DAO askıya alma işlevleri çağrıldığında veritabanının kilitlenmesine neden olan sorun düzeltildi. b/120854786

Sürüm 2.1.0-alpha03

4 Aralık 2018

API Değişiklikleri

  • @Fts3/@Fts4 içindeki FTS tokenizer artık Enum yerine String alıyor. Bu, özel belirteçleyicilerin Room tarafından kullanılmasına olanak tanır. Yerleşik belirteçler, FtsOptions içinde dize sabitleri olarak tanımlanmaya devam eder. b/119234881

Yeni Özellikler

  • Couroutines: DAO yöntemleri artık askıya alınabilir işlevler olabilir. Odalarda askıya alma işlevlerini desteklemek için yeni bir yapay nesne yayınlandı: room-coroutines. b/69474692
  • @Insert, @Delete veya @Update ile açıklama eklenmiş DAO yöntemleri artık dönüş türü olarak ListenableFuture'ı destekliyor. b/119418331

Hata Düzeltmeleri

  • Room'un, @Entity öğesinin ignoredColumns özelliğinde sütun içeren bir oluşturucu bulmaya yanlışlıkla çalıştığı hata düzeltildi. b/119830714
  • Room'un, oluşturulan uygulamada DAO yöntemi parametrelerini nihai olarak işaretlememesine neden olan hata düzeltildi. b/118015483
  • Room işlemcisinin, özel semboller içeren bir sorguda hata bildirilirken kilitlenmesine neden olan hata düzeltildi. b/119520136
  • Room'un, Collection uygulamalarını IN ifadesinin bağımsız değişkenleri olarak reddetmesine neden olan hata düzeltildi. b/119884035
  • Room'dan döndürülen LiveData'nın, sonsuza kadar gözlemlendiğinde çöp toplama işlemine tabi tutulup artık yeni veri yayınlamamasına neden olan hata düzeltildi. b/74477406
  • Kilit anlaşmazlığını azaltmak için RoomDatabase adlı kullanıcının yakın kilit özelliği güncellendi. b/117900450

Sürüm 2.1.0-alpha02

30 Ekim 2018

Yeni Özellikler

  • @Relation içinde @DatabaseView öğesine referans verme desteği eklendi. b/117680932

Hata Düzeltmeleri

  • Room'un, Rx dönüş türüne abone olurken ve bu türü kullanımdan kaldırırken ana iş parçacığında disk G/Ç'si gerçekleştirmesine neden olan hata düzeltildi. b/117201279
  • Room'un Kotlin varlık sınıfındaki bir alan için uygun tür dönüştürücü bulamamasına neden olan hata düzeltildi. b/111404868
  • Room'un, bağımsız değişken içermeyen bir Kotlin varsayılan yöntemi içeren DAO arayüz uygulaması için yanlış kod oluşturmasına neden olan hata düzeltildi. b/117527454
  • Room SQLite dilbilgisi ayrıştırıcısı güncellendi. Bu güncelleme, uzun derleme sürelerine neden olan performans sorununu düzeltir. b/117401230

Sürüm 2.1.0-alpha01

8 Ekim 2018

Yeni Özellikler

  • FTS: Room artık FTS3 veya FTS4 tablosuyla eşleme içeren varlıkları destekliyor. @Entity ile açıklama eklenen sınıflara artık @Fts3 veya @Fts4 ile ek açıklama eklenerek eşleme tam metin arama tablosu içeren bir sınıf bildirilebilir. Daha fazla özelleştirme için FTS seçenekleri, açıklama yöntemleriyle kullanılabilir. b/62356416
  • Görünümler: Room artık @DatabaseView ek açıklaması kullanılarak bir sınıfın görünüm olarak da bilinen depolanmış sorgu olarak bildirilmesini destekliyor. b/67033276
  • AutoValue: Room artık AutoValue ek açıklamalı sınıfların varlık ve POJO olarak bildirilmesini destekliyor. Oda ek açıklamaları @PrimaryKey, @ColumnInfo, @Embedded ve @Relation artık otomatik değer ek açıklamalı bir sınıfın soyut yöntemlerinde bildirilebilir. Room'un bu ek açıklamaları doğru şekilde anlaması için @CopyAnnotations ile birlikte kullanılması gerektiğini unutmayın. b/62408420
  • Ek Rx dönüş türleri desteği: @Insert, @Delete veya @Update ile açıklama eklenmiş DAO yöntemleri artık Completable, Single<T> ve Maybe<T> Rx dönüş türlerini destekliyor. b/63317956
  • @Relation ile Değişmez Türler: Room, daha önce @Relation ek açıklamalı alanların ayarlanabilir olmasını gerektiriyordu ancak artık bunlar oluşturucu parametreleri olabilir.
  • enableMultiInstanceInvalidation: Aynı veritabanı dosyası kullanılarak RoomDatabase'in birden fazla örneğinde geçersiz kılmayı etkinleştirmek için RoomDatabase.Builder'deki yeni bir API'dir. Bu çoklu örnek geçersiz kılma mekanizması, birden fazla işlemde de çalışır. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: Bir sürüm düşürme işlemi gerçekleşirse veritabanını otomatik olarak yeniden oluşturmak için RoomDatabase.Builder'deki yeni bir API'dir. b/110416954
  • ignoredColumns: @Entity ek açıklamasında, yoksayılan alanları ada göre listelemek için kullanılabilecek yeni bir API'dir. Bir varlıkta devralınan alanları yoksaymak için kullanışlıdır. b/63522075

API/Davranış Değişiklikleri (API/Behavior Changes)

  • RoomDatabase konumundaki mCallback ve mDatabase artık @Deprecated ve Room'un bir sonraki ana sürümünde kaldırılacak. b/76109329

Hata Düzeltmeleri

  • Room'un başlatma sırasında bozuk bir veritabanından veya hatalı bir taşıma işleminden düzgün şekilde kurtulamamasına neden olan iki sorun düzeltildi. b/111504749 ve b/111519144
  • Room artık Kotlin'in birincil oluşturucusunu veri sınıflarında doğru şekilde kullanacak ve alanların vars olarak bildirilmesine gerek kalmayacak. b/105769985

Sürüm 2.0.0

Sürüm 2.0.0

1 Ekim 2018

androidx.room 2.0.0, 2.0.0-rc01 sürümüne kıyasla herhangi bir değişiklik yapılmadan yayınlandı.

Sürüm 2.0.0-rc01

20 Eylül 2018

androidx.room 2.0.0-rc01, 2.0.0-beta01 sürümüne kıyasla herhangi bir değişiklik yapılmadan yayınlandı.

Sürüm 2.0.0-beta01

2 Temmuz 2018

API/Davranış Değişiklikleri (API/Behavior Changes)

  • Sorguların nerede çalıştırılacağının özelleştirilmesine olanak tanıyan RoomDatabase.Builder.setQueryExecutor() eklendi
  • RxJava2 Observable desteği eklendi
  • Oluşturulan DAO ve veritabanı uygulamaları artık nihai

Hata Düzeltmeleri

  • "cannot find getter for field" hatasında sınıf/alan adı belirtme b/73334503
  • RoomOpenHelper'ın Room'un eski sürümleriyle geriye dönük uyumluluğu düzeltildi. b/110197391

AndroidX Öncesi Bağımlılıklar

Room'un AndroidX öncesi sürümleri için şu bağımlılıkları ekleyin:

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

Sürüm 1.1.1

Sürüm 1.1.1

19 Haziran 2018

1.1.1 numaralı oda, 1.1.1-rc1 numaralı odanın aynısı.

Sürüm 1.1.1-rc1

16 Mayıs 2018 Taşıma işlemi kullanıyorsanız 1.1.0 yerine Room 1.1.1-rc1 kullanmanızı önemle tavsiye ederiz.

Room'un taşıma sonrası başlatmayı düzgün şekilde yapmamasına neden olan hata düzeltildi b/79362399.

Sürüm 1.1.0

Sürüm 1.1.0-beta3

19 Nisan 2018

Hata Düzeltmeleri

  • Kotlin POJO'su, Java'da tanımlanmış bir ilişki öğesine referans verdiğinde derleme hatasını düzeltme b/78199923

Sürüm 1.1.0-beta2

5 Nisan 2018

Hata Düzeltmeleri

  • Room Rx Single ve Maybe uygulamalarında, sorguyu önceden geri dönüştürerek döndürülen Single veya Maybe örneklerine birden fazla gözlemci eklemeniz durumunda sorunlara neden olan kritik bir hata düzeltildi. b/76031240

  • [RoomDatabase.clearAllTables][ref-clearAllTables], bir işlem içinde çağrılırsa veritabanını VACUUM.b/77235565

Sürüm 1.1.0-beta1

21 Mart 2018

API Değişiklikleri

  • API inceleme geri bildirimlerine göre @RawQuery artık sorgu parametresi olarak String iletilmesini kabul etmiyor. [SupportSQLiteQuery][ref-SupportSQLiteQuery] kullanmanız gerekir. (Bağımsız değişken desteğiyle [SupportSQLiteQuery][ref-SupportSQLiteQuery] örneğini kolayca oluşturmak için [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] konusuna bakın.)
  • RoomDatabase.Builder'ın [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] yöntemi artık vararg Integer yerine vararg int değerini kabul ediyor.

Hata Düzeltmeleri

  • [RoomDatabase.clearAllTables][ref-clearAllTables], artık bir WAL kontrol noktası ayarlayarak ve veritabanını VACUUMlayarak alanı işletim sistemine geri döndürmeye çalışıyor.
  • [@RawQuery][ref-RawQuery] artık Pojo, Embedded alanları veya Relation'leri aracılığıyla bir veya daha fazla öğeye referans verdiği sürece observedEntities özelliği için herhangi bir Pojo'yu kabul ediyor. b/74041772
  • Sayfalama: Room'un DataSource uygulaması artık çok tablolu bağımlılıkları (ör. ilişkiler ve birleştirmeler) doğru şekilde işliyor. Daha önce bunlar yeni sonuçları tetikleyemiyor veya derlenemiyordu. b/74128314

Sürüm 1.1.0-alpha1

22 Ocak 2018

Yeni Özellikler

  • RawQuery: Bu yeni API, @Dao yöntemlerinin SQL'i sorgu parametresi olarak almasına olanak tanır. b/62103290, b/71458963
  • fallBackToDestructiveMigrationsFrom: RoomDatabase.Builder'taki bu yeni API, yıkıcı geçişlere hangi başlangıç şema sürümlerinden izin verileceği konusunda daha ayrıntılı kontrol sağlar (fallbackToDestructiveMigration ile karşılaştırıldığında). b/64989640
  • Room artık yalnızca daha yeni Paging API'lerini (alfa-4+) destekliyor ve kullanımdan kaldırılan LivePagedListProvider desteğini sonlandırıyor. Yeni Room alfa sürümünü kullanmak için alpha-4 veya sonraki bir sürümü kullanmanız ve henüz yapmadıysanız LivePagedListProvider sürümünden LivePagedListBuilder sürümüne geçmeniz gerekir.

Hata Düzeltmeleri

  • Kotlin Kapt türleri için destek iyileştirildi. b/69164099
  • Alanların sırası artık şemayı geçersiz kılmaz. b/64290754