Room

Oda kalıcılığı kitaplığı, daha sağlam veritabanı erişimi sağlamak için SQLite üzerinde bir soyutlama katmanı en iyi şekilde yararlanabilirsiniz.
Son Güncelleme Kararlı Sürüm Yayın Adayı Beta Sürümü Alfa Sürümü
21 Ağustos 2024 2.6.1 - - 2.7.0-alfa07

Bağımlılıkları bildirme

Room'a bağımlılık eklemek için Google Maven deposunu belirler. Google'ın Maven deposunu okuyun konulu videomuzu izleyin.

Odaya bağımlılıklar şunları içerir: test odası taşıma işlemleri ve Oda RxJava

build.gradle dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin. uygulamanız veya modülünüz:

Eski

dependencies {
    def room_version = "2.6.1"

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

    // To use Kotlin annotation processing tool (kapt)
    kapt "androidx.room:room-compiler:$room_version"
    // To use Kotlin Symbol Processing (KSP)
    ksp "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"
}

Kotlin

dependencies {
    val room_version = "2.6.1"

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

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

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

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

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

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

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

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

KAPT eklentisini kullanma hakkında bilgi edinmek için KAPT belgelerine bakın.

KSP eklentisini kullanma hakkında bilgi için KSP hızlı başlangıç dokümanlarına bakın.

Kotlin uzantılarını kullanma hakkında bilgi için ktx dokümanlarına bakın.

Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme bölümüne bakın.

İsteğe bağlı olarak, Android olmayan kitaplıklar (ör. Java veya yalnızca Kotlin'e özel Gradle modülleri) için Oda ek açıklamalarını kullanmak için androidx.room:room-common sağlayıcısına başvurabilirsiniz.

Derleyici Seçeneklerini Yapılandırma

Oda, aşağıdaki ek açıklama işlemci seçeneklerine sahiptir.

room.schemaLocation directory.
Veri tabanı şemalarının dizin. Oda Taşıma İşlemleri başlıklı makaleye göz atın konulu videomuzu izleyin.
room.incremental boolean.
Gradle artımlı ek açıklama işlemcisini etkinleştirir. Varsayılan değer true.
room.generateKotlin boolean.
Java yerine Kotlin kaynak dosyaları oluşturun. KSP gerekir. false varsayılan değerdir. Daha ayrıntılı bilgi için sürüm 2.6.0 notlarına bakın.

Room Gradle eklentisini kullanma

Room 2.6.0 ve sonraki sürümlerde, Room Gradle eklentisini kullanarak Oda derleyicisi seçeneklerini yapılandırın. Eklenti, projeyi Bunlar, derleme görevlerinin bir çıktısı olan ve emin olmanız gerekir) doğru şekilde yapılandırıldığından önbellekteki derlemeler hakkında daha fazla bilgi edinebilirsiniz.

Eklentiyi eklemek için üst düzey Gradle derleme dosyanızda eklentisi ve sürümü.

Eski

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ına sahip olur.

Eski

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 öğesinin ayarlanması gerekir. Bu Room derleyiciyi, çeşitli derleme görevlerini ve arka uçlarını yapılandırır (javac, KAPT, KSP) ekleyerek şema dosyalarını aromalı klasörlere dönüştürebilirsiniz. schemas/flavorOneDebug/com.package.MyDatabase/1.json Bu dosyalar depoda kontrol edildi.

Bazı seçenekler, Room Gradle eklentisinin tüm sürümlerinde yapılandırılamaz. olsalar da Oda derleyicisi tarafından desteklenmeleri gerekir. Aşağıdaki tabloda her bir seçeneğini içerir ve Room Gradle eklentisinin room uzantısını kullanarak bu seçeneği yapılandırabilirsiniz. Sizin sürümünüz daha düşükse veya seçenek henüz desteklenmiyorsa not işlemci seçeneklerini kullanın.

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

Ek açıklama işlemci seçeneklerini kullan

Room Gradle eklentisini kullanmıyorsanız veya kullanmak istediğiniz seçenek kullanılmıyorsa desteklenen bir sürümü kullanıyorsanız Odayı ek açıklama işlemci seçenekleri için Derleme bağımlılıkları ekleyin. Nasıl? ek açıklama seçeneklerini belirtmeniz, Oda için KSP veya KAPT kullanıp kullanmadığınıza bağlıdır.

Eski

// 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 basit bir tür değil de bir dizin olduğu için bu seçeneği eklerken CommandLineArgumentsProvider kullanmak olduğunu tespit ettik. Oda veritabanınızı taşıma , aşağıdakileri içeren tam bir CommandLineArgumentsProvider uygulamasını gösterir: konumlandıracaktır.

Geri bildirim

Geri bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Yeni sorunlarla karşılaşırsanız veya fikir edinebilirsiniz. Daha fazla bilgi için lütfen mevcut sorunlar tıklayın. Oyunuzu mevcut bir soruna eklemek için yıldız düğmesini tıklayın.

Yeni sayı oluştur

Sorun İzleyici dokümanlarına bakın konulu videomuzu izleyin.

Sürüm 2.7

Sürüm 2.7.0-alpha07

21 Ağustos 2024

androidx.room:room-*:2.7.0-alpha07 yayınlandı. Sürüm 2.7.0-alpha07 bu kaydetmeleri içerir.

Yeni Özellikler

  • Room Gradle eklentisi artık dışa aktarılan şemaları MigrationTestHelper tarafından kullanılabilmesi için Android Araç Testi kaynak kaynaklarına otomatik olarak ekleyecek.

Hata Düzeltmeleri

  • initialize işlevinde "gerçek" değiştiricisi bulunmayan RoomDatabaseConstructor "gerçek" değeri, bu işlev "bekle" beyanında da geçersiz kılındıysa bu sorun düzeltildi. (359631627)
  • RoomDatabaseConstructor için oluşturulan "gerçek" değeriyle ilgili "beklenti" beyanının görünürlüğüyle eşleşmeyen sorun düzeltildi. (358138953)

Sürüm 2.7.0-alpha06

7 Ağustos 2024

androidx.room:room-*:2.7.0-alpha06 yayınlandı. Sürüm 2.7.0-alpha06 bu kaydetmeleri içerir.

API Değişiklikleri

  • Bir KMP projesinde RoomDatabase için örneklendirme ayarlarını değiştirin.

Kotlin 2.0 derleme modeli nedeniyle, instantiateImpl() adlı oluşturulacak bir işleve referans verme stratejisi daha uzun süredir uygulanabilir. instantiateImpl() stratejisinin yerini alacak iki yeni API (@ConstructedBy ve RoomDatabaseConstructor) kullanıma sunuldu. Yeni strateji aşağıdaki gibidir:

  1. RoomDatabaseConstructor uygulayan bir beklenen nesne tanımlayın

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

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

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

b/316978491 ile ilgili düzeltmeler, b/338446862 ve b/342905180

  • Ham SQL dizesini ve bağımsız değişkenleri bir ifadeye bağlamak için kullanılan işlevi açısından SupportSQLiteQuery benzeri, RoomRawQuery adında yeni bir API eklenerek Room KMP'de @RawQuery desteği. @RawQuery ek açıklamalı işlevleri artık RoomRawQuery öğesini tek parametre olarak kabul edebilir. (Iea844, b/330586815)
  • CoroutineContext kabul eden bir setQueryCallback() aşırı yüklemesi ekleyin. (Id66ff, b/309996304)
  • linuxArm64 Kotlin Çoklu Platform hedefi (I139d3, b/338268719) için destek eklendi

Hata Düzeltmeleri

  • Odanın, Android dışı hedeflerde yanlışlıkla recursiveFetchArrayMap araması oluşturmasına neden olan sorunu düzeltin. (710c36, b/352482325)
  • Odaların, KMP projesinde zaman zaman "Bağlantı girişimi zaman aşımına uğradı" ile ilgili istisna bildirmesine neden olan sorun düzeltildi. (fa72d0, b/347737870)
  • Diğer tablolar yeni yabancı anahtarlara uyum sağlamak için şemalarını değiştirmeden çok önce yabancı anahtarları kontrol eden otomatik taşıma işlemlerinde yaşanan bir sorunu düzeltti. (7672c0, b/352085724)

Sürüm 2.7.0-alpha05

10 Temmuz 2024

androidx.room:room-*:2.7.0-alpha05 yayınlandı. Sürüm 2.7.0-alpha05 bu kaydetmeleri içerir.

API Değişiklikleri

  • SQLiteKt adlı dosya SQLite ve BundledSQLiteKt adlı dosya BundledSQLite olarak yeniden adlandırıldı. (I8b501)

Hata Düzeltmeleri

  • AndroidSQLiteDriver kullanılırken RoomDatabase öğesinin 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 yayınlandı. Sürüm 2.7.0-alpha04 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • DAO'da çoklu harita döndürme türü tanımlandığında Odanın ek açıklama işlemcisinde uyumsuz KMP kodu oluşturulmasına neden olan bir sorun düzeltildi. (b/340983093)
  • @Database ek açıklamalı sınıfın hiçbir paketi olmadığında Odanın oluşturulan veritabanı uygulamasını bulamamasına neden olan sorun düzeltildi. (b/342097292)
  • Otomatik kapatma ve birden çok örneği geçersiz kılma özelliklerinin etkinleştirilmesi, veritabanı boşta olduğu için otomatik olarak kapatıldığında bazen ConcurrentModificationException oluşmasına neden olan sorun düzeltildi.

Sürüm 2.7.0-alpha03

29 Mayıs 2024

androidx.room:room-*:2.7.0-alpha03 yayınlandı. Sürüm 2.7.0-alpha03 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Kotlin 2.0 ve KSP 2.0 ile ilgili çeşitli sorunları düzeltin. KSP 2 desteği sunan Kotlin 2.0 sürümünü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 yayınlandı. Sürüm 2.7.0-alpha02 bu kaydetmeleri 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 yayınlandı. Sürüm 2.7.0-alpha01 bu kaydetmeleri içerir.

Yeni Özellikler

  • Kotlin Çoklu Platform (KMP) Desteği: Bu sürümde Room, Kotlin Multiplatform (KMP) kitaplığı olacak şekilde yeniden düzenlendi. Hâlâ yapılacak işler olsa da bu sürümde, Room'da işlevlerin büyük bir kısmının "ortak" hale getirildiği (çok platformlu) yeni bir sürüm kullanıma sunuluyor. Şu anda Android, iOS, JVM (Masaüstü), yerel Mac ve yerel Linux platformları desteklenir. Yeni desteklenen platformlarda eksik olan tüm işlevler, gelecekteki Oda sürümlerinde "özellik tamamlandı" durumuna getirilecektir.

Room KMP'yi kullanmaya nasıl başlayacağınız hakkında daha fazla bilgi için lütfen resmi Room KMP belgelerini inceleyin.

  • İşleme KSP aracılığıyla yapılıyorsa KSP'de Kotlin Kodu Oluşturma varsayılan olarak AÇIK durumdadır. Room, KAPT veya yalnızca Java projeleri için Java kaynakları oluşturmaya devam eder.

API Değişiklikleri

  • Oluşturulan RoomDatabase uygulamasını örneklendirirken yansımanın kullanılmaması için Oda tarafından oluşturulan bir işlevle kullanılması amaçlanan lambda parametresini alan bir Room.databaseBuilder() aşırı yüklemesi eklendi. Örnek kullanım:
Room.databaseBuilder<MyDatabase>(
    context = appContext,
    name = dbFilePath,
    factory =  { MyDatabase::class.instantiateImpl() }
)
  • CoroutineContext bulunan bir Odayı yapılandırmaya yönelik API, oluşturucuya eklendi: RoomDatabase.Builder.setQueryCoroutineContext. Bir RoomDatabase öğesinin, setQueryExecutor kullanan yürütücülerden yalnızca biriyle veya eş yordam bağlamıyla yapılandırılabileceğini, ancak ikisinin aynı anda yapılandırılamayacağını unutmayın.
  • Odayı bir SQLite Sürücüsü ile yapılandırmak için API eklendi: RoomDatabase.Builder.setDriver(). SQLite Driver API hakkında daha fazla bilgi için SQLite KMP dokümanlarına bakın.
  • Sürücü API'lerinden temel SQLiteConnection öğesine erişmek için API'ler eklendi: RoomDatabase.useReaderConnection ve RoomDatabase.useWriterConnection.
  • Çeşitli Oda ile alakalı geri çağırmalarda artık SupportSQLiteDatabase yerine SQLiteConnection alan aşırı yüklenmiş bir sürüm var. Bunlar, KMP projesine taşınırken geçersiz kılınacak şekilde tasarlanmıştır. Bir Android uygulamasındaki oda kullanımlarını ortak bir KMP modülüne taşıma hakkında daha fazla bilgi için taşıma rehberine bakın. Geri çağırma işlevleri:
    • 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 onu 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 yayınlandı. Sürüm 2.6.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Oluşturulan kodda, EntityCursorConverter öğesindeki Çift sütun değerinin 0,0 yerine 0 olarak ayarlandığı sorun çözüldü. Kayan türde sütunlara yönelik benzer bir kenar büyük harf için olası bir düzeltme de eklenmiştir. (Id75f5, b/304584179)
  • PagingSource yüklemelerinden atılan istisnalar, artık Atılabilir öğe içeren LoadStateUpdate öğesinin LoadResult.Error öğesi olarak yayılacak. Bu hata durumu PagingDataAdapter.loadStateFlow(Views) veya LazyPagingItems.loadState(Compose) ile gözlemlenebilir. Bunun, geçmişteki yükleme hatalarının, yüklemeyi tetikleyen dao yöntemi tarafından atılan bir İstisna olarak ortaya çıkacağı davranışsal bir değişiklik anlamına geldiğini unutmayın. (I93887, b/302708983)

Sürüm 2.6.0

18 Ekim 2023

androidx.room:room-*:2.6.0 yayınlandı. 2.6.0 sürümü bu kaydetmeleri içerir.

2.5.0'dan bu yana önemli değişiklikler

  • Kotlin kod oluşturmayı etkinleştirme seçeneği (veya "Kotlin CodeGen"), artık Oda KSP'sinde kullanılabilir. (4297ec0). Room'da Kotlin CodeGen'i etkinleştirmek için KSP için işlemci seçeneklerinize room.generateKotlin seçenek adını ekleyin. KSP için işlemci seçeneklerinin nasıl iletileceği hakkında daha fazla bilgi edinmek üzere KSP belgelerini inceleyin.

Not: Kotlin CodeGen'i kullanırken, eklenen ek kısıtlamaların olduğunu unutmamak önemlidir. Kotlin CodeGen'de DAO alıcıları veya DAO sorguları olarak soyut özelliklere izin verilmez. Bunun yerine, özellik değerinin sabit olduğu ve sabit depolanan bir sonuca sahip olduğu yanlış düşüncesini ortadan kaldırmak için işlev olarak yeniden yazılması beklenir. Eklenen bir diğer kısıtlama ise Kotlin CodeGen için Room'da boş değer atanabilir toplama dönüş türlerine izin verilmemesidir.

Uyarı: Kotlin CodeGen kullanırken projelerinizin boş değer atanması açısından daha katı olduğunu görebilirsiniz. Kotlin CodeGen'de, bağımsız değişkenlerin boş değeri önemlidir. Java'da ise bu çoğu zaman göz ardı edilir. Örneğin, "Akış<foo\>" döndürme türünüz olduğunu ve tablonun boş olduğunu varsayalım. Bu, Java CodeGen'de herhangi bir soruna neden olmaz ancak Kotlin CodeGen'de bir hata alırsınız. Bunu önlemek için null değer verildiğini varsayarak "Flow<foo?\>" işlevini kullanmanız gerekir. </foo?\></foo\>

  • Room Gradle eklentisi için yeni yapı androidx.room kimliğine sahip Oda'ya eklendi. Bu yapı, Room'da Gradle ek açıklama işlemci seçenekleri aracılığıyla şema giriş ve çıkışlarına sahip olma ile ilgili mevcut çeşitli sorunları çözer. Daha ayrıntılı bilgi için Oda Sürümü 2.6.0-alpha02 sürüm notlarına bakın.
  • Oda Öğelerindeki değer sınıfları artık KSP için desteklenmektedir. (4194095)
  • DAO işlevlerinde iç içe yerleştirilmiş Harita döndürme türleri artık Oda'da destekleniyor. (I13f48, 203008711)

Sürüm 2.6.0-rc01

20 Eylül 2023

androidx.room:room-*:2.6.0-rc01 yayınlandı. 2.6.0-rc01 sürümü bu kaydetmeleri içerir.

Sürüm 2.6.0-beta01

23 Ağustos 2023

androidx.room:room-*:2.6.0-beta01 yayınlandı. Sürüm 2.6.0-beta01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Bir upsert sırasında 2067 SQLITE_CONSTRAINT_UNIQUE istisnası atıldığında karşılaşılan kurulum sırasında SQLite özel durum istisnası işlendiğinde, upsert bir güncelleme gerçekleştirmesi gerekir. (If2849, b/243039555)

Sürüm 2.6.0-alpha03

9 Ağustos 2023

androidx.room:room-*:2.6.0-alpha03 yayınlandı. 2.6.0-alpha03 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • DAO işlevlerinde iç içe yerleştirilmiş Harita döndürme türleri artık Oda'da destekleniyor. (I13f48, 203008711)

API Değişiklikleri

  • @MapInfo yerine artık desteği sonlandırılan @MapColumn adlı yeni bir ek açıklama türü oluşturuldu. Bir @MapInfo ek açıklamasında sağlanan her bir sütun adı (keyColumnName, valueColumnName veya her ikisi) için yalnızca columnName ile bir @MapColumn ek açıklaması bildirmeniz ve DAO işlevinin döndürme türünde, başvurulan belirli tür bağımsız değişkeninde (Haritanın anahtarı veya değeri) ek açıklamayı kullanmanız gerekir. Bunun nedeni, @MapColumn ek açıklamasının, @MapInfo gibi işlevin kendisi yerine, bir DAO işlevinin döndürülen türü içindeki 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)
  • API dosyaları, uyumluluk engellemesine açıklama ekleyecek şekilde güncellendi (I8e87a, b/287516207)
  • Room Gradle eklentisi API'leri her zaman her varyant için yapılandırma gerektirmeyecek şekilde güncellendi. Böylece eklenti, birden fazla dizin oluşturmadan tüm varyantlar için global konumu kabul edebilir. Böylece, daha sorunsuz taşıma işlemleri gerçekleştirilebilir. Bu da, eklentilerin (yeniden oluşturulabilir ve önbelleğe alınabilir derlemeler) avantajlarından yararlanmaya devam ederken çeşitleri veya derleme türü şemalarını manuel olarak yapılandıracak kadar da esnektir. (I09d6f, b/278266663)

Hata Düzeltmeleri

  • QueryInterceptorStatement sisteminde 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 yayınlandı. 2.6.0-alpha02 sürümü bu kaydetmeleri içerir.

Room Gradle Eklentisi

Bu yeni sürüm, Room Gradle Plugin için androidx.room kimlikli yeni bir yapı içeriyor. Bu yapı, Room'da Gradle ek açıklama işlemci seçenekleri aracılığıyla şema giriş ve çıkışlarına sahip olma ile ilgili mevcut çeşitli sorunları çözer. Room Gradle eklentisi projeyi, otomatik taşıma işlemleri için kullanılan ve derleme görevlerinin çıkışı olan şemalar, yeniden üretilebilir ve önbelleğe alınabilir derlemelere sahip olacak şekilde doğru şekilde yapılandırılacak şekilde yapılandırır. Eklenti, temel şema konumunu yapılandırmak için bir DSL sunar:

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

Ardından eklenti, Room derleyicisini, çeşitli derleme görevlerini ve arka uçlarını (javac, KAPT, KSP) şema dosyalarını aromalı klasörlerde (ör. schemas/flavorOneDebug/com.package.MyDatabase/1.json) oluşturacak şekilde yapılandırır. Bu dosyalar, her zaman olduğu gibi doğrulama ve otomatik taşıma işlemleri için kullanılacak depoya denetlenir. Ek açıklama işlemci seçenekleri yerine eklentiyi kullanmaya geçişin ardından, mevcut şema dosyalarının eklenti tarafından oluşturulan oluşturulan bilgi dizinlerine kopyalanması gerekir. Bu, manuel olarak yapılması gereken tek seferlik bir taşıma işlemidir. developers.android.com adresindeki şema dokümanları, geri bildirim ele alındığında ve eklenti kararlı hale geldiğinde ileride güncellenecektir. Bu nedenle, lütfen deneyin.

API Değişiklikleri

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

Hata Düzeltmeleri

  • Room kaynaklarının Java'dan Kotlin'e taşınmasından sonra Robolectric'te veritabanı örneklendirirken ortaya çıkan sorun çözme. (Ic053c, b/274924903)

Sürüm 2.6.0-alpha01

22 Mart 2023

androidx.room:room-*:2.6.0-alpha01 yayınlandı. 2.6.0-alpha01 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Room'da KSP için değer sınıflarını destekleme. Oda, artık Varlıklar bölümündeki değer sınıflarını destekleyebilir. (4194095)
  • Kotlin kodu oluşturma(veya "Kotlin CodeGen") artık Oda'da (4297ec0) etkinleştirilebilir. Room'da Kotlin CodeGen'i etkinleştirmek için KSP için işlemci seçeneklerinize room.generateKotlin seçenek adını ekleyin. KSP için işlemci seçeneklerinin nasıl iletileceği hakkında daha fazla bilgi edinmek üzere KSP belgelerini inceleyin.

Not: Kotlin CodeGen'i kullanırken, eklenen ek kısıtlamaların olduğunu unutmamak önemlidir. Kotlin CodeGen'de DAO alıcıları veya DAO sorguları olarak soyut özelliklere izin verilmez. Bunun yerine, özellik değerinin sabit olduğu ve sabit depolanan bir sonuca sahip olduğu yanlış düşüncesini ortadan kaldırmak için işlev olarak yeniden yazılması beklenir. Eklenen bir diğer kısıtlama ise Kotlin CodeGen için Room'da boş değer atanabilir toplama dönüş türlerine izin verilmemesidir.

Uyarı: Kotlin CodeGen kullanırken projelerinizin boş değer atanması açısından daha katı olduğunu görebilirsiniz. Kotlin CodeGen'de, bağımsız değişkenlerin boş değeri önemlidir. Java'da ise bu çoğu zaman göz ardı edilir. Örneğin, "Akış<foo\>" döndürme türünüz olduğunu ve tablonun boş olduğunu varsayalım. Bu, Java CodeGen'de herhangi bir soruna neden olmaz ancak Kotlin CodeGen'de bir hata alırsınız. Bunu önlemek için null değer verildiğini varsayarak "Flow<foo?\>" işlevini kullanmanız gerekir. </foo?\></foo\>

API Değişiklikleri

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

Hata Düzeltmeleri

  • Kotlin kod oluşturucuda soyut özelliklere, DAO alıcıları veya DAO sorguları olarak izin vermeyin. Bunun yerine, özellik değerinin sabit olduğu ve depolanan sabit bir sonuca sahip olduğu gibi yanlış bir algıdan kaçınmak için bu özelliklerin işlev olarak yeniden yazılması 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 yayınlandı. Sürüm 2.5.2 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • kotlinx-metadata-jvm ile ilgili uyumsuzluk sorununu düzeltin. (386d5c)
  • Robolectric testinde kullanıldığında Room'un hata vermesine neden olan bir 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 yayınlandı. Sürüm 2.5.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Veritabanı zaten açıksa FrameworkSQLiteHelper içindeki veritabanı üst dizinini kontrol etmekten kaçının. (5de86b8)
  • Veritabanının zaten açık olup olmadığını kontrol ederken bir isOpenInternal kontrolü kullanın. (e91fb35)
  • Odanın acquireTransactionThread() bölümünde alıcı destek kaydının daha iyi işlenmesi artık mümkün. (219f98b). Room, askıya alma işlemi sırasında işlem yürütücüden gelen bir iş parçacığını kullanır, bunun içinde bir etkinlik döngüsü başlatır ve tümünün işlem eş yordamı içinde kapsüllenmesi için veritabanı işlemlerini askıya alan veritabanı işlemlerini bu iş parçacığına gönderir. Genellikle işlem ileti dizisinin işlemi başlatan ileti dizisinden farklı olması beklenir ancak bazı durumlarda aynıdır. Bu tür yeniden giriş durumlarının işlenmesi için withTransaction(), artık bir kontrol işine bağlı kalmayacak şekilde yeniden düzenlendi. Bunun yerine, askıya alma işlemi bloğunu işlem ileti dizisindeki 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 serbest bırakıldı. 2.5.0 sürümü bu kaydetmeleri içerir.

Sürüm 2.5.0

11 Ocak 2023

androidx.room:room-*:2.5.0 yayınlandı. 2.5.0 sürümü bu kaydetmeleri içerir.

2.4.0'dan bu yana önemli değişiklikler

  • room-runtime kaynağın tümü Java'dan Kotlin'e dönüştürüldü. Kodunuz Kotlin'deyse, kitaplığın Kotlin'e dönüştürülmesi nedeniyle kaynak uyumsuzluğu sorunlarıyla karşılaşabileceğinizi unutmayın. Örneğin, bilinen bir kaynak uyumsuzluğu değişikliği, InvalidationTracker ürününde MutableSet yerine Set türünde bir parametreye sahip olmak için artık Observer içinde onInvalidate() değerini bildirmeniz gerektiğidir. Ayrıca, belirli alıcı yöntemleri, Kotlin dosyalarında mülk erişimi söz dizimi gerektiren mülklere dönüştürüldü. Önemli uyumsuzluklar varsa lütfen hata bildiriminde bulunun.
  • Benzersizlik çakışması olmadığında öğe eklemeye veya çakışma durumunda öğeyi güncellemeye çalışan @Upsert adlı yeni bir kısayol ek açıklaması eklendi. (I7aaab, b/241964353)
  • Oda Servisleri'ni desteklemek için room-paging-rxjava2, room-paging-rxjava3 ve room-paging-guava adlı yeni oda çağırma yapıları eklendi.
  • @MapInfo ürününde (Icc4b5) belirsizliği gidermek için anahtar ve değer tablosu adları sağlamaya yönelik API'ler eklendi

Sürüm 2.5.0-rc01

7 Aralık 2022

androidx.room:room-*:2.5.0-rc01 yayınlandı. Sürüm 2.5.0-rc01 bu kaydetmeleri 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 yayınlandı. Sürüm 2.5.0-beta02 bu kaydetmeleri içerir.

API Değişiklikleri

  • Java'nın dizi davranışıyla eşleştirmek için değişkenden (Array<Any?>) sorgu bağımsız değişkenine (Array<out Any?>) sorgu bağımsız değişkeni 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 yayınlandı. Sürüm 2.5.0-beta01 bu kaydetmeleri içerir.

API Değişiklikleri

  • @Upsert sürümünü destekleyen minimum sürümü API 16 olarak kısıtlayın. Bunun nedeni, eski API'lerde birincil anahtar kısıtlama çakışmasının kimliğinin doğrulanamamasıdır. (I5f67f, b/243039555)

Hata Düzeltmeleri

  • Gölge tabloların hatalı bir şekilde şema .json dosyalarına aktarılmasına ve bu tabloları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 yayınlandı. Sürüm 2.5.0-alpha03 bu kaydetmeleri içerir.

Yeni Özellikler

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

Hata Düzeltmeleri

  • Oda, otomatik taşıma yabancı anahtar kısıtlama kontrolü sırasında IllegalStateException yerine bir SQLiteConstraintException atar. (I328dd)
  • getOpenHelper, getQueryExecutor ve getTransactionExecutor öğelerinin alıcısı / özellikleri için uyumsuz Kotlin kaynağındaki değişikliği düzeltin. (Iad0ac)

Sürüm 2.5.0-alpha02

1 Haziran 2022

androidx.room:room-*:2.5.0-alpha02 yayınlandı. 2.5.0-alpha02 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

API Değişiklikleri

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

    Not: Kütüphanenin Kotlin'e dönüştürülmesi nedeniyle kaynak uyumsuzluğu sorunlarıyla karşılaşabilirsiniz. Kodunuz Kotlin'deyse ve Room'un eski sürümünü çağırıyorsa yeni sürümün bu tür durumları ele alması gerekir. Örneğin, bilinen bir kaynak uyumsuzluğu değişikliği, InvalidationTracker ürününde MutableSet yerine Set türünde bir parametreye sahip olmak için artık Observer içinde onInvalidate() değerini bildirmeniz gerektiğidir.

  • @MapInfo ürününde (Icc4b5) belirsizliği gidermek için anahtar ve değer tablosu adları sağlamaya yönelik API'ler eklendi
  • Mülk alıcılarda @Ignore iznini yeniden etkinleştirmek için kaynak uyumluluğu sorununu düzeltin. (Ifc2fb)

Hata Düzeltmeleri

  • Yinelenen sütun çözümleme buluşsal algoritması. Oda, artık çoklu eşleme sorgusundaki belirsiz sütunları çözümlemeye çalışacak. Bu, aynı ada sahip tablolar içeren tablolara sahip JOIN'lerin bir sonuç veri nesnesiyle doğru şekilde eşlenmesine olanak tanır. (I4b444, b/201306012, b/212279118)

Sürüm 2.5.0-alpha01

23 Şubat 2022

androidx.room:room-*:2.5.0-alpha01 yayınlandı. Sürüm 2.5.0-alpha01 bu kaydetmeleri içerir.

API Değişiklikleri

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

    Not: Kitaplık Kotlin'e dönüştürülürken bazı mülkler tamamlayıcı nesnelere taşındığından kaynak uyumsuzluğu sorunlarıyla karşılaşabilirsiniz. Kodunuz Kotlin'deyse ve Oda'nın eski sürümünü çağırıyorsa yeni sürümde ".Companion" öğesi gereklidir. soneke tabi tutulması gerekir.

  • Oda taşıma işlemi Java'dan Kotlin'e dönüştürüldü. (I2724b, b/206858622)
  • room-runtime ile ilgili paging dosya Java'dan Kotlin'e dönüştürüldü. (I82fc8, b/206859668)
  • Çok işlemli ilk veritabanı oluşturma ve taşıma işlemlerini korumak amacıyla, FrameworkSQLite* düzeyinde çoklu işlem kilidi ve kullanım için API eklendi. (Ied267, b/193182592)

Hata Düzeltmeleri

  • Kotlin kaynaklarındaki dahili mülkler için destek eklendi. Bu, Oda'da kaynağın kullanılacağı küçük bir davranış değişikliğidir alıcı/belirleyici olarak özelliklerle eşleştiren işlevlerin adı (önceden, farklı olan işlevin JVM adını dahili işlevler/mülkler için). Alıcıları/belirleyicileri eşleştirmek için özel @JvmName ek açıklamaları kullanıyorsanız eklemek istiyorsanız, lütfen güncelleme (If6531, b/205289020)

Sürüm 2.4.3

Sürüm 2.4.3

27 Temmuz 2022

androidx.room:room-*:2.4.3 yayınlandı. Sürüm 2.4.3 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Odanın, Kotlin 1.7'de (b/236612358) askıya alma işlevlerini tanımamasına neden olan bir sorun düzeltildi

Sürüm 2.4.2

Sürüm 2.4.2

23 Şubat 2022

androidx.room:room-*:2.4.2 yayınlandı. Sürüm 2.4.2 bu kaydetmeleri içerir.

Hata Düzeltmeleri

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

Sürüm 2.4.1

Sürüm 2.4.1

12 Ocak 2022

androidx.room:room-*:2.4.1 yayınlandı. Sürüm 2.4.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Kotlin kaynaklarındaki dahili mülkler için destek eklendi. Bu, Oda'da kaynağın kullanılacağı küçük bir davranış değişikliğidir alıcı/belirleyici olarak özelliklerle eşleştiren işlevlerin adı (önceden, farklı olan işlevin JVM adını dahili işlevler/mülkler için). Alıcıları/belirleyicileri eşleştirmek için özel @JvmName ek açıklamaları kullanıyorsanız eklemek istiyorsanız, lütfen güncelleme (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 yayınlandı. 2.4.0 sürümü bu kaydetmeleri içerir.

2.3.0'dan bu yana önemli değişiklikler

  • Otomatik Taşıma İşlemleri: Odada artık, şemalar dışa aktarıldığı sürece taşıma işlemlerinin otomatik olarak oluşturulması için bir API sunulmaktadır. Odanın otomatik taşıma işlemi oluşturması gerektiğini bildirmek için, yeni bir @Database#autoMigrations mülkü kullanarak hangi sürümlerden hangilerine otomatik olarak taşıma yapılacağını bildirebilirsiniz. Oda, tablolar ve sütunların yeniden adlandırılması veya silinmesiyle ilgili ek bilgiye ihtiyaç duyduğunda @AutoMigration ek açıklaması bu tür girişleri içeren bir spesifikasyon sınıfı bildirebilir. Daha fazla bilgi için @AutoMigration dokümanlarına bakın.
  • Otomatik Taşıma İşlemlerinde Bağımlılık Ekleme: @ProvidedAutoMigrationSpec, çalışma zamanında RoomDatabase.Builder#addAutoMigrationSpec() aracılığıyla bir AutoMigrationSpec sağlanacağını beyan eden yeni bir API'dir. Böylece karmaşık bağımlılıklara ihtiyaç duyulduğunda bu tür özellikleri sağlamak için bağımlılık yerleştirme çerçevesi kullanılabilir.
  • Otomatik Taşıma İşlemleri İçin Taşıma Testi Yardımcısı Desteği: Odanın MigrationTestHelper değeri, test altındaki veritabanı sınıfını alan yeni bir oluşturucu API sağlanarak otomatik taşımaları destekleyecek şekilde güncellendi. Bu, yardımcının runMigrationsAndValidate sırasında otomatik taşıma işlemlerini aynı şekilde otomatik olarak eklemesine olanak tanır.
  • Oda Çağrısı Desteği: androidx.room:room-paging aboneliği iptal edildi ve androidx.paging.PagingSource döndüren Oda sorguları için yerel Sayfalama 3.0 desteği sağlandı.
  • İlişkisel Sorgu Yöntemleri: Oda, artık JOIN ifadeleri için yararlı olan çoklu harita döndürme türleri @Dao yöntemlerini destekliyor. Desteklenen çoklu harita türleri şunlardır: Map, SparseArray, LongSparseArray ve Guava'nın ImmutableMap, ImmutableSetMultimap ve ImmutableListMultimap.

Sürüm 2.4.0-rc01

1 Aralık 2021

androidx.room:room-*:2.4.0-rc01 yayınlandı. Sürüm 2.4.0-rc01 bu kaydetmeleri içerir.

Yeni Özellikler

  • Kotlin 1.6 sürümünü desteklemek için Room'un KSP'ye olan 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 yayınlandı. Sürüm 2.4.0-beta02 bu kaydetmeleri içerir.

Yeni Özellikler

  • @MapInfo'ya SparseArray ve LongSparseArray için destek ekledik. (Ic91a2b/138910317)

Hata Düzeltmeleri

  • Null değeri alan yeni bir TypeConverter analiz edici eklendi değerlendirebiliriz. Bu bilgiler yalnızca varsayılan olarak yalnızca KSP'de açıktır. Herhangi bir soruna neden oluyorsa bu adımı uygulayarak Ek açıklama için Room.useNullAwareTypeAnalysis=false işlemci. Bu durumda lütfen bir dosya hatası oluştu, çünkü bu bayrak daha kolay olur. Bu yeni TypeConverter analizciyle, yalnızca Yeni analiz edicinin kendi içinde olduğu gibi, kullanabilirsiniz. Bu durumun, anahtar kelime olarak KAPT veya Java'yı kullanan kullanıcılar üzerinde ek açıklama işlemcilerinde (KSP'nin aksine) boş değer atanabilirlik bilgilerine sahip değildir. farklı türlerde. (Ia88f9, b/193437407)
  • Bir FTS varlığının ICU jeton oluşturucuyu kullandığını belirttiğinde Odanın SQL hatasıyla derleme hatasına neden olduğu hatayı düzeltin. (I00db9, b/201753224)
  • Sürümler arasında yerleştirilmiş bir varlığa eklenen yeni bir sütunla ilgili otomatik taşıma işlemlerinde sorun çözüldü. (I5fcb1b/193798291)
  • LEFT JOIN sorgularındaki ilişkisel sorgu yöntemi döndürme türleriyle ilgili bir sorunu çözdük. Bu değişikliklerle, 1-çok sayıda eşlemenin bulunduğu durumlarda, bir anahtar için döndürülen koleksiyon, imleçte bulunmayan geçersiz değer nesnesini içermeyecektir. Geçerli değer bulunamazsa bir anahtar, boş bir koleksiyona eşlenir. (Id5552b/201946438)
  • SQLite anahtar kelimelerinin sütun adlarında kod dışına alınamadığı 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 yayınlandı. Sürüm 2.4.0-beta01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Aynı otomatik taşıma işlemindeki başka bir tabloda aynı ada sahip yeni bir sütun olduğunda, otomatik taşıma işlemlerinde yeni sütun eklenmemesiyle ilgili sorun düzeltildi. (Ia5db5, b/200818663)
  • Oda sayfalama tarafından oluşturulan PagingSource uygulaması RoomDatabase.Builder üzerinden geçen queryExecutor parametresini kullanır, böylece şunları yapabilir: geçersiz kılınır.Dispatchers.IO (Iae259)

Sürüm 2.4.0-alpha05

29 Eylül 2021

androidx.room:room-*:2.4.0-alpha05 yayınlandı. 2.4.0-alpha05 sürümü bu kaydetmeleri 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 veritabanının tamamı 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'lardaki çoklu eşleme 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 gerekir. Ö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>
  • Paging3'ü Room ile kullanırken room-paging öğesini gerekli bir yapı haline getirin. (Ieaffe)

Hata Düzeltmeleri

  • Sorgu, harita anahtarındaki bir sütunun ORDER BY ifadesini içerdiğinde, çoklu eşleme sorgularının sonuçlarının doğru sıralanmamasına neden olan sorun düzeltildi. (I6b887)

Harici Katkı

  • @Dizin'de dizin sırasını belirtmek üzere yeni API eklendi. Nikita Zhelonkin'e teşekkürler. (I033fc)

Sürüm 2.4.0-alpha04

21 Temmuz 2021

androidx.room:room-*:2.4.0-alpha04 yayınlandı. 2.4.0-alpha04 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Oda, artık JOIN ifadeleri için kullanışlı olan çoklu eşleme dönüş türleri @Dao yöntemlerini destekliyor. Desteklenen çoklu harita türleri şunlardır: Map ve Guava'nın ImmutableMap, ImmutableSetMultimap ve ImmutableListMultimap.

    Aşağıda, çoklu eşleme sorgularının örnekleri verilmiştir:

    Bire Bir İlişki Haritası

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

    Bire-Birden Ç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 eşleme sonucu LiveData, Rx'in Observable veya eş yordamları Flow gibi desteklenen eşzamansız dönüş türlerinde de sarmalanabilir.

Oda Çağrısı

  • androidx.paging.PagingSource döndüren Oda sorguları için yerel Sayfalandırma 3.0 desteği sağlayan androidx.room:room-paging yayınlandı.

    @Dao
    interface UserDao {
      @Query("SELECT * FROM users ORDER BY id ASC")
      fun loadUsers(): PagingSource<Int, User>
    }
    
  • Bu yapı, Room tarafından oluşturulan androidx.paging.PagingSource uygulamasını, Paging 3.0 API'leri üzerine oluşturulan 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, Sayfa Aracı'nın oluşturucusu aracılığıyla iletilen initialKey de dahil olmak üzere, bu davranış değişikliğini hesaba katması gerekir. Sayfalar Key üzerinden yüklenmeye başlayacak ve Key, ilk yüklenen öğe olacak. Bu, LoadParams.Refresh.Key öğesinin kullanıcının kaydırma konumu olarak değerlendirildiği ve öğelerin anahtardan önce ve sonra yüklendiği mevcut davranıştan saptır.

  • Yapı isteğe bağlıdır ve devre dışı bırakma işlemi, Oda 2.3'te kullanıma sunulan mevcut Sayfalandırma 3.0 desteğinin yerine geçer. Ancak bu yapı, Sayfa 3.0 ile Oda kullananlar için gelecekteki sürümde isteğe bağlı olmayacak. Etkinleştirmek için yeni oda sayfa oluşturma yapısını sınıf yolunuza ekleyin. Gradle kullanıyorsanız build.gradle dosyanıza aşağıdaki snippet'i ekleyebilirsiniz:

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

Hata Düzeltmeleri

  • Otomatik taşıma işlemlerinde yabancı anahtar ihlallerinin ele alınmasıyla ilgili bir sorunu düzeltin. (b/190113935)

Sürüm 2.4.0-alpha03

16 Haziran 2021

androidx.room:room-*:2.4.0-alpha03 yayınlandı. 2.4.0-alpha03 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • Odanın MigrationTestHelper öğesini, test edilen veritabanı sınıfını alacak yeni bir oluşturucu API sağlayarak otomatik taşımaları destekleyecek şekilde güncelleyin. Bu, yardımcının runMigrationsAndValidate sırasında otomatik taşıma işlemlerini aynı şekilde otomatik olarak eklemesine olanak tanır.

Hata Düzeltmeleri

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

  • @Transaction işlevinin döndürme türü Akış olduğunda Oda hatasının oluşmaması sorunu düzeltildi (I56ddd, b/190075899)

  • Otomatik taşıma işlemlerinde dizinlerle ilgili bir sorunu düzeltin. b/177673291

Bağımlılık Güncellemeleri

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

Sürüm 2.4.0-alpha02

5 Mayıs 2021

androidx.room:room-*:2.4.0-alpha02 yayınlandı. 2.4.0-alpha02 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

  • @ProvidedAutoMigrationSpec, çalışma zamanında RoomDatabase.Builder#addAutoMigrationSpec() aracılığıyla AutoMigrationSpec sağlanacağını beyan etmek için kullanılan yeni bir API'dir. Böylece karmaşık bağımlılıklara ihtiyaç duyulduğunda bu tür özellikleri sağlamak için bağımlılık yerleştirme çerçevesi kullanılabilir.

Hata Düzeltmeleri

  • @DatabaseView öğelerinin düzgün şekilde yeniden oluşturulamadığı otomatik taşıma işlemleriyle ilgili bir sorun düzeltildi.

Harici Katkı

  • Odanın JournalMode.TRUNCATE özelliğinde InvalidationTracker geri çağırmasının bazen geçersiz bir şekilde, çok geç veya hiç çağrılmadığı sorunu düzeltin. Uli Bubenheimer | bubenheimer@users.noreply.github.com adlı kullanıcıya teşekkür ederiz (b/154040286)

Sürüm 2.4.0-alpha01

21 Nisan 2021

androidx.room:room-*:2.4.0-alpha01 yayınlandı. Sürüm 2.4.0-alpha01 bu kaydetmeleri içerir.

Yeni Özellikler

  • Otomatik Taşıma İşlemleri: Odada artık, şemalar dışa aktarıldığı sürece taşıma işlemlerinin otomatik olarak oluşturulması için bir API sunulmaktadır. Odanın otomatik taşıma işlemi oluşturması gerektiğini bildirmek için, yeni bir @Database#autoMigrations mülkü kullanarak hangi sürümlerden hangilerine otomatik olarak taşıma yapılacağını bildirebilirsiniz. Oda, tablolar ve sütunların yeniden adlandırılması veya silinmesiyle ilgili ek bilgiye ihtiyaç duyduğunda @AutoMigration ek açıklaması bu tür girişleri içeren bir spesifikasyon sınıfı bildirebilir. Diğer ayrıntılar için @AutoMigration belgelerini inceleyin.

Hata Düzeltmeleri

  • Ekstra parantez içeren defaultValue öğesinin, Oda'nın şema doğrulaması tarafından yanlış şekilde doğrulanmasına neden olan sorunu düzeltin. b/182284899

Sürüm 2.3.0

Sürüm 2.3.0

21 Nisan 2021

androidx.room:room-*:2.3.0 yayınlandı. 2.3.0 sürümü bu kaydetmeleri içerir.

2.2.0'dan bu yana önemli değişiklikler

  • Yerleşik Enum Desteği: Oda, artık varsayılan olarak Enum - Dize ve tam tersi bir dönüştürücü (hepsi sağlanmamışsa) kullanacaktır. Bir numaralandırma için tür dönüştürücü zaten varsa Oda, varsayılan türe göre onu kullanmaya öncelik verir.
  • Sorgu Geri Çağırması: Oda artık, sorguların yürütülmek üzere olduğu durumlarda kullanılmak üzere genel bir geri çağırma API'si (RoomDatabase.QueryCallback) sunuyor. Bu, hata ayıklama derlemelerine giriş yapmak için yararlı olabilir. Geri çağırma özelliği RoomDatabase.Builder#setQueryCallback() aracılığıyla ayarlanabilir.
  • Önceden Paketlenmiş İyileştirme: Odada artık, giriş akışından okunan önceden paketlenmiş bir veritabanını kullanarak veritabanı oluşturmaya yönelik API'ler bulunmaktadır. Bu, önceden paketlenmiş veritabanının gzip'lenmesi gibi durumlara olanak tanır.
  • Sağlanan Tür Dönüştürücüler: Odada artık, uygulamanın başlatma işlemini kontrol edebilmesi için tür dönüştürücü örnekleri sağlamak üzere API'ler bulunmaktadır. Oda'ya 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: Oda artık RxJava3 türlerini destekliyor. RxJava2'ye benzer şekilde, dönüş türü Akan, Tek, Belki ve Uyumlu olan DAO yöntemlerini bildirebilirsiniz. Ayrıca, RxJava3'ü desteklemek için yeni bir androidx.room:room-rxjava3 yapısı kullanıma sunulmuştur.
  • Adım 3.0 Desteği: Oda, artık dönüş türü androidx.paging.PagingSource olan ek açıklamalı @Query yöntem için uygulama oluşturmayı destekleyecek.

Sürüm 2.3.0-rc01

24 Mart 2021

androidx.room:room-*:2.3.0-rc01 yayınlandı. Sürüm 2.3.0-rc01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Oda tarafından oluşturulan Eşzamanlı Akış sorgularının, askıya alınan bir withTransaction blokunda kullanılmasını engelleyen bir sorun düzeltildi. (I797bf)

Sürüm 2.3.0-beta03

10 Mart 2021

androidx.room:room-*:2.3.0-beta03 yayınlandı. Sürüm 2.3.0-beta03 bu kaydetmeleri içerir.

Yeni Özellikler

Hata Düzeltmeleri

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

Harici Katkı

  • Odanın, @SkipQueryVerification ek açıklaması da olduğunda @Query ek açıklamalı DAO yönteminde POJO dönüş türünü kabul etmesine izin verin. Oda, @RawQuery ek açıklamalı DAO yönteminde olduğu gibi sorgunun sonucunu POJO dönüş türüne dönüştürmek için elinden gelenin en iyisini yapar. "Markus Riegel | hey@marcorei.com" adresini ziyaret edin. (I45acb)

Sürüm 2.3.0-beta02

18 Şubat 2021

androidx.room:room-*:2.3.0-beta02 yayınlandı. Sürüm 2.3.0-beta02 bu kaydetmeleri içerir.

Yeni Özellikler

  • Odada artık Kotlin Sembolü İşleme KSP için deneysel destek sunulmaktadır.

    KSP, KAPT'nin yerine geçerek ek açıklama işlemcilerini Kotlin derleyicide yerel olarak çalıştırarak derleme sürelerini önemli ölçüde kısaltı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 bilgi için KSP belgelerine bakın.

    KSP deneysel olduğundan, üretim kodu için yine de KAPT kullanmanızın önerildiğini unutmayın. Derleme sürelerinin kısaltılması yalnızca KAPT'yi kullanan başka işlemci yoksa geçerlidir. Bilinen sorunlar için b/160322705 adresine bakın.

Sürüm 2.3.0-beta01

27 Ocak 2021

androidx.room:room-*:2.3.0-beta01 yayınlandı. Sürüm 2.3.0-beta01 bu kaydetmeleri içerir.

Yeni Özellikler

  • Otomatik Kapatılabilir Veritabanları: Oda, artık belirli bir süre sonunda erişilmeyen veritabanlarını kapatma olanağına sahiptir. Bu, deneysel bir özelliktir ve RoomDatabase.Builder#setAutoCloseTimeout() 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 stratejilerden yalnızca biriyle kod oluşturmasına neden olan sorunu düzeltin. (I0b90d, b/176138543)

Sürüm 2.3.0-alpha04

16 Aralık 2020

androidx.room:room-*:2.3.0-alpha04 yayınlandı. 2.3.0-alpha04 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Odada artık sorguların yürütülmek üzere olduğu durumlar için RoomDatabase.QueryCallback genel geri çağırma API'si sunuluyor. Bu API, hata ayıklama derlemelerine giriş yaparken faydalı olabilir. Geri çağırma özelliği RoomDatabase.Builder#setQueryCallback() aracılığıyla ayarlanabilir. (Iaa513, b/174478034, b/74877608)
  • Oda, artık varsayılan olarak Enum to String ve tersi türde dönüştürücü (hiçbiri sağlanmamışsa) kullanacaktır. Bir numaralandırma için tür dönüştürücü zaten varsa Oda, varsayılan türe göre onu kullanmaya öncelik verir. (b/73132006)

Bilinen Sorun

  • Sıralama için okumak üzere tek yönlü bir dönüştürücü zaten varsa Oda, yanlışlıkla yerleşik Dizeden Enum dönüştürücüyü (istenmeyebilir) kullanabilir. Bu bilinen bir sorundur ve iki yönlü dönüştürücü yapılarak giderilebilir. Bkz. b/175707691

Hata Düzeltmeleri

  • Odanın 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 Odanın oluşturulan sınıfı bulmasıyla ilgili sorun düzeltildi. "Serendipity | 892449346@qq.com") (b/170141113)
  • Bir Kotlin @Dao öğesi, JVM'de jenerik öğeleri temel öğeler olan bir temel sınıfa sahip olduğunda Odanın yanlış kod oluşturmasına neden olan sorun düzeltildi. (b/160258066)

Harici Katkı

  • WAL modu etkinse ve API 16 veya daha fazlaysa oda artık varsayılan olarak beginTransactionNonExclusive kullanılacak. Ahmet I. Halil | ahmedibrahimkhali@gmail.com" (b/126258791)

Sürüm 2.3.0-alpha03

14 Ekim 2020

androidx.room:room-*:2.3.0-alpha03 yayınlandı. 2.3.0-alpha03 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • Odada artık, uygulamanın başlatma işlemini kontrol edebilmesi için tür dönüştürücü örnekleri sağlamak için API'ler bulunuyor. Oda'ya 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" hesabına teşekkürler. (Ie4fa5, b/121067210)

  • Odada artık giriş akışından okunan önceden paketlenmiş bir veritabanını kullanarak veritabanı oluşturmak için API'ler bulunuyor. Bu, önceden paketlenmiş veritabanının gzip'lenmesi gibi durumlara olanak tanır. "Ahmed El-Helw ahmedre@gmail.com" hesabına teşekkürler (3e6792, b/146911060)

API Değişiklikleri

  • @ForeignKey ek açıklamasına eksik hedef eklendi ve bu hedef, @Entity ek açıklaması dışında kullanımını engelledi. (Buzlu1e)

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

Hata Düzeltmeleri

  • TypeConverters’ın yalnızca sütunları / alanları dönüştürmek için kullanılabildiğini, satırları değil de dönüştürüldüğünü açıklığa kavuşturmak için TypeConverters dokümanlarında güncelleme yapın. (I07c56, b/77307836)

  • Dao'daki derleyici hatasını Kotlin "temel öğeleri" içeren genel bir süper türüyle düzeltmek için DaoProcessor güncellemesi. (Ice6bb, b/160258066)

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

  • Odanın, satır kimliği sütununu bildiren FTS tablolarını yanlış şekilde doğrulamasıyla ilgili sorunu düzeltin. (d62ebc, b/145858914)

Harici Katkılar

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

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

  • Önceden paketlenmiş bir durum için onOpenPrepackagedDatabase geri çağırması ekleyin VT kopyalandı. (I1ba74, b/148934423)

Sürüm 2.3.0-alpha02

22 Temmuz 2020

androidx.room:room-*:2.3.0-alpha02 yayınlandı. 2.3.0-alpha02 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • RxJava3 Desteği: Oda artık RxJava3 türlerini destekliyor. RxJava2'ye benzer şekilde, dönüş türü Akan, Tek, Belki ve Uyumlu olan DAO yöntemlerini bildirebilirsiniz. Ayrıca, RxJava3'ü desteklemek için yeni bir androidx.room:room-rxjava3 yapısı kullanıma sunulmuştur. (b/152427884)

API Değişiklikleri

  • Kotlin Nesne sınıfında @TypeConverter tanımlama artık desteklenmektedir. (b/151110764)
  • Odanın artımlı ek açıklama işleme seçeneği artık varsayılan olarak AÇIK. (b/112110217)

Sürüm 2.3.0-alpha01

10 Haziran 2020

androidx.room:room-*:2.3.0-alpha01 yayınlandı. Sürüm 2.3.0-alpha01 bu kaydetmeleri içerir.

Yeni Özellikler

  • Adım 3.0 Desteği: Oda, artık dönüş türü androidx.paging.PagingSource olan ek açıklamalı @Query yöntemler için uygulama oluşturmayı destekleyecek.

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

API Değişiklikleri

  • @RewriteQueriesToDropUnusedColumns, Odanın bir sorgudaki "*" projeksiyonunu sonuçtaki kullanılmayan sütunları kaldıracak şekilde yeniden yazmasını sağlayan yeni ve kullanışlı bir ek açıklamadır.
  • room.expandProjection işlemci seçeneği kullanımdan kaldırıldı. Yıldız tahminleriyle oda optimizasyonu yapan sorguların yerine @RewriteQueriesToDropUnusedColumns kullanın. @RewriteQueriesToDropUnusedColumns değerinin, @Embedded alanı içeren döndürme türleriyle ilgili olarak sunulan sütun çakışması çözümünün room.expandProjection yerine geçmediğini unutmayın.

Hata Düzeltmeleri

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

Sürüm 2.2.6

Sürüm 2.2.6

16 Aralık 2020

androidx.room:room-*:2.2.6 yayınlandı. 2.2.6 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Odanın 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 yayınlandı. 2.2.5 sürümü bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • MultiInstanceInvalidationService Direct BootAware'i seçin. "Mygod contact-git@mygod.be" hesabına teşekkürler (b/148240967)
  • Birden çok örnek geçersiz kılması etkinleştirildiğinde ve veritabanı bir FTS varlığı içerdiğinde kilitlenmeye neden olan bir hata düzeltildi. (b/148969394)
  • Oda ek açıklama işlemcisinde SQLite yerel kitaplıkları yüklenirken, paralel derlemeler nedeniyle derleyicinin kilitlenmesine neden olacak bir 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ınlandı. Sürüm 2.2.4 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Eş yordamın işlem gerçekten başlamadan hemen iptal edilmesi halinde işlemlerin kilitlenmesine neden olacak şekilde askıya alınmasıyla ilgili sorun düzeltildi. (b/148181325)
  • JDK 9 ile derleme yaparken @Generated öğesinin yanlış şekilde kullanılmasıyla ilgili sorun düzeltildi. (b/146538330)
  • Kotlin'deki bir DAO arayüzünde somut bir işlev olduğunda Odanın 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 yayınlandı. Sürüm 2.2.3 bu kaydetmeleri içerir.

Hata düzeltmeleri

  • Odanın, herhangi bir taşıma işlemine geçmemiş ve şemasında dizinler içeren eski bir karma içeren veritabanını doğrulayamaması sorunu 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 yayınlandı. Sürüm 2.2.2 bu kaydetmeleri içerir.

Hata düzeltmeleri

  • 999'dan fazla satırla bire bir ilişki toplanmasının, Odanın boş alakalı öğeler döndürmesine neden olmasına 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 yayınlandı. Sürüm 2.2.1 bu kaydetmeleri içerir.

Hata düzeltmeleri

  • Odanın, derleyici seçeneğiexpandProjection etkinken CURSOR_MISMATCH hakkında yanlışlıkla uyarı vermesine neden olan hata düzeltildi. (b/140759491)
  • Derleme süresi sırasında sorguları doğrulamak için kullanılan eksik yerel kitaplığın işlenmesini sağlayan bir 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 yayınlandı. 2.2.0 sürümü bu kaydetmeleri içerir.

2.1.0 sürümünden bu yana önemli değişiklikler

  • Önceden Paketlenmiş Veritabanı: RoomDatabase.Builder içinde iki yeni API artık kullanımda halihazırda doldurulmuş bir veritabanı verildiğinde RoomDatabase oluşturmak için kullanılabilir dosyası olarak kaydedebilirsiniz. createFromAsset(), önceden doldurulmuş veritabanı dosyasının APK'nın öğeler klasörü, createFromFile() ise dosyanın istediğiniz konuma karar verebilirsiniz. Bu API'lerin kullanımı, yıkıcı taşıma işlemleri gerçekleştirilebilir. Böyle bir yedek taşıma sırasında Oda, yeniden kopyalamak için bir istek oluşturun. Aksi takdirde tabloları yeniden oluşturuyoruz. b/62185732
  • Şema Varsayılan Değerleri: @ColumnInfo artık yeni bir defaultValue mülküne sahip bir sütunun varsayılan değerini belirtmek için kullanılabilir. Varsayılan değerler: bir veri tabanı şeması örneğidir ve taşıma sırasında doğrulanacaksa belirtiliyor. b/64088772
  • Birden Çoka Çok İlişki: @Relation artık yeni bir associateBy mülküne sahip. içeren yeni bir ek açıklama içeren @Junction, bir bağlantı tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gerekir. b/69201917
  • Bire Bir İlişkiler: @Relation artık List veya Set türünde olacak şekilde kaldırıldı Tek değerli ilişkilerin temsil edilmesine imkan tanır. b/62905145
  • Hedef Varlık: DAO ek açıklamaları @Insert, @Update ve @Delete artık mevcut yeni bir targetEntity mülkü içeriyor. Bu mülk, DAO yönteminin amacı işlem yapmaya yöneliktir. Böylece, söz konusu DAO'nun parametreleri yöntemler, kısmi varlıklar olarak yorumlanacak şekilde rastgele POJO'lar olmamalıdır. Pratikte bu, kısmi ekleme, silme ve güncelleme işlemlerine olanak tanır. b/127549506
  • Koordinat Akışı: @Query DAO yöntemleri artık Flow<T> dönüş türünde olabilir. Gözlemlenen tablolar sorgu geçersiz kılınır. Channel<T> dönüşüyle DAO işlevi tanımlama type bir hatadır. Oda, bunun yerine Flow ve ardından Flow öğesini Channel biçimine dönüştürmek için komşu fonksiyonlar kullanın. b/130428884
  • Gradle Artımlı Ek Açıklama İşleyici: Oda artık Gradle'dan izole ediliyor ek açıklama işlemcisi ve artımlılık, işlemci aracılığıyla etkinleştirilebilir. room.incremental. seçenek Görüntüleyin Oda Derleyici Seçenekleri konulu videomuzu izleyin. Herhangi bir sorunla karşılaşırsanız lütfen burada bulabilirsiniz. Gelecekteki kararlı bir sürümde artırılabilirliği varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217
  • Genişleyen Projeksiyonlar: Yeni bir deneysel derleyici seçeneği Odanın sorguyu yeniden yazmasına neden olan room.expandProjection eklendi POJO döndüren türündeki sütunları içerecek şekilde bir yıldız projeksiyonu oluşturun. Örneğin, örnek olarak, @Query("SELECT * FROM Song") ve POJO, SongIdAndTitle adlı yeri yalnızca iki alanla adlandırdı. Ardından Oda, yeniden yazarak SELECT id, title FROM Song değerine ayarlayın, böylece minimum sütun kümesi getirildiğinden emin olun. Bu işlem temel olarak, Sorgu fazladan döndürdüğünde gösterilen CURSOR_MISMATCH uyarı döndürülen POJO türündeki herhangi bir alanla eşleşmeyen sütunlar.

Sürüm 2.2.0-rc01

5 Eylül 2019

androidx.room:room:2.2.0-rc01 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

2.2.0-beta01 adlı odadan bu yana herkese açık değişiklik yok.

Sürüm 2.2.0-beta01

22 Ağustos 2019

androidx.room:room-*:2.2.0-beta01 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Hata düzeltmeleri

  • Eş yordam akışı sorgusunun belirli bir süre sonra yeni değerler göndermeyi durdurmasına neden olan hata düzeltildi. (b/139175786)
  • Odanın, Oda 1.0'dan bu yana taşınmayan bir veritabanını açarken eski şema karma kodunu kabul etmemesi ve geçersiz şema nedeniyle çalışma zamanı kilitlenmesine neden olan hata düzeltildi. (b/139306173)

Sürüm 2.2.0-alpha02

7 Ağustos 2019

androidx.room:room-*:2.2.0-alpha02 yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Yeni Özellikler

  • Koordinat Akışı: @Query DAO yöntemleri artık Flow<T> dönüş türünde olabilir. Gözlemlenen tablolar sorgu geçersiz kılınır. Channel<T> dönüşüyle DAO işlevi tanımlama type bir hatadır. Oda, bunun yerine Flow ve ardından Flow öğesini Channel biçimine dönüştürmek için komşu fonksiyonlar kullanın. b/130428884
  • Genişleyen Projeksiyonlar: Yeni bir deneysel derleyici seçeneği Odanın sorguyu yeniden yazmasına neden olan room.expandProjection eklendi POJO döndüren türündeki sütunları içerecek şekilde bir yıldız projeksiyonu oluşturun. Örneğin, örnek olarak, @Query("SELECT * FROM Song") ve POJO, SongIdAndTitle adlı yeri yalnızca iki alanla adlandırdı. Ardından Oda, yeniden yazarak SELECT id, title FROM Song değerine ayarlayın, böylece minimum sütun kümesi getirildiğinden emin olun. Bu işlem temel olarak, Sorgu fazladan döndürdüğünde gösterilen CURSOR_MISMATCH uyarı döndürülen POJO türündeki herhangi bir alanla eşleşmeyen sütunlar.
  • onDestructiveMigrate, RoomDatabase.Callback API'sine eklenen yeni bir geri çağırma API'sidir. Bu işlem, Odanın bir veritabanını yok edici bir şekilde taşıdığı durumlar için geçerlidir. b/79962330

Hata Düzeltmeleri

  • Odanın, alan olarak bir yöntem kullanarak yanlış kod oluşturmasına neden olan hata düzeltildi. ayarlayıcı olarak tanımlar. b/136194628
  • InvalidationTracker'ın saniye içinde NPE bildirmesine neden olan bir hata düzeltildi çok örnek geçersiz kılması etkinleştirildiğinde ve geçersiz kılma işleminin Hizmet sonlandırıldı. b/137454915
  • Odanın döndürme türünü doğru şekilde tanımlamamasına neden olan hata düzeltildi. @RawQuery ek açıklamasıyla birlikte devralınan askıya alma işlevi. b/137878827
  • İlgili anahtar türde olduğunda @Relation için oluşturulan kod güncellendi BLOB ile karşılaştırılabilir bir ByteBuffer kullanmak için. b/137881998
  • Room'da, şu şekilde kullanılan POJO'larda kayıp seter'dan şikayetçi olan bir hata düzeltildi. @Insert, @Update ve @Delete kısmi varlık parametreleri. b/138664463
  • Odanın kayıp alıcılardan ve seter'lar belirli DAO'da varlık sınıfı kullanıldığında @Entity aracılığıyla yoksayılan sütun yöntemlerine göz atın. b/138238182
  • Odanın adlandırılmış bağlama bağımsız değişkenlerini tekrar kullanılan bir parametredir. b/137254857

Sürüm 2.2.0-alpha01

10 Temmuz 2019

Yeni Özellikler

  • Önceden Paketlenmiş Veritabanı: RoomDatabase.Builder içinde iki yeni API artık kullanımda halihazırda doldurulmuş bir veritabanı verildiğinde RoomDatabase oluşturmak için kullanılabilir dosyası olarak kaydedebilirsiniz. createFromAsset(), önceden doldurulmuş veritabanı dosyasının APK'nın öğeler klasörü, createFromFile() ise dosyanın istediğiniz konuma karar verebilirsiniz. Bu API'lerin kullanımı, yıkıcı taşıma işlemleri gerçekleştirilebilir. Böyle bir yedek taşıma sırasında Oda, yeniden kopyalamak için bir istek oluşturun. Aksi takdirde tabloları yeniden oluşturuyoruz. b/62185732
  • Şema Varsayılan Değerleri: @ColumnInfo artık yeni bir defaultValue mülküne sahip bir sütunun varsayılan değerini belirtmek için kullanılabilir. Varsayılan değerler: bir veri tabanı şeması örneğidir ve taşıma sırasında doğrulanacaksa belirtiliyor. b/64088772

    Not: Veritabanı şemanızda zaten varsayılan ayar varsa ve ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z aracılığıyla eklenenler gibi varsayılan değerleri @ColumnInfo aracılığıyla bir taşıma işlemi gerçekleştirmeniz gerekebilir. hesaba katılmayan varsayılan değerlere sahiptir. Görüntüleyin Oda Taşıma İşlemleri konulu videomuzu izleyin.

  • Birden Çoka Çok İlişki: @Relation artık yeni bir associateBy mülküne sahip. içeren yeni bir ek açıklama içeren @Junction, bir bağlantı tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gerekir. b/69201917
  • Bire Bir İlişkiler: @Relation artık List veya Set türünde olacak şekilde kaldırıldı Tek değerli ilişkilerin temsil edilmesine imkan tanır. b/62905145
  • Hedef Varlık: DAO ek açıklamaları @Insert, @Update ve @Delete artık mevcut yeni bir targetEntity mülkü içeriyor. Bu mülk, DAO yönteminin amacı işlem yapmaya yöneliktir. Böylece, söz konusu DAO'nun parametreleri yöntemler, kısmi varlıklar olarak yorumlanacak şekilde rastgele POJO'lar olmamalıdır. Pratikte bu, kısmi ekleme, silme ve güncelleme işlemlerine olanak tanır. b/127549506
  • Gradle Artımlı Ek Açıklama İşleyici: Oda artık Gradle'dan izole ediliyor ek açıklama işlemcisi ve artımlılık, işlemci aracılığıyla etkinleştirilebilir. room.incremental. seçenek Görüntüleyin Oda Derleyici Seçenekleri konulu videomuzu izleyin. Herhangi bir sorunla karşılaşırsanız lütfen burada bulabilirsiniz. Gelecekteki kararlı bir sürümde artırılabilirliği varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217

Hata Düzeltmeleri

  • Oda, EmptySetResultException öğesini artık daha önce bir sorgunun Rx akışı kaldırıldığında genel hata işleyici sorgu tamamlandı. b/130257475
  • Askıya alma işlemi yapıldığında Odada yanlış hata mesajı gösterilmesine neden olan hata düzeltildi @RawQuery ek açıklamasına sahip DAO işlevinin bir dönüş türü yoktu. b/134303897
  • Oda, 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

2.1.0-rc01 adlı binada herhangi bir değişiklik yapılmadan 2.1.0 odası iptal edildi. Sürümde yer alan taahhütlere buradan ulaşabilirsiniz.

2.0.0'dan bu yana önemli değişiklikler

  • FTS: Oda artık eşleme içeren varlıkları destekliyor FTS3 veya FTS4 tablosu. Not: @Entity öğesine artık @Fts3 veya @Fts4 ile ek açıklama eklenebilir. eşleme tam metin arama tablosu olan bir sınıf. Daha fazlası için FTS seçenekleri ek açıklama yöntemleriyle kullanılabilir.
  • Görünümler: Oda artık bir sınıfın depolanan sorgu olarak tanımlanmasını destekliyor. görünüm olarak kullanarak @DatabaseView ek açıklaması.
  • Ders içerikleri: DAO yöntemleri artık askıya alma işlevleri olabilir. room-ktx öğesini dahil et bu işlevden yararlanmak için bağımlılıklarınızı belirtmeniz gerekir. ktx yapısı , aynı zamanda RoomDatabase.withTransaction için bir eş yordam içinde veritabanı işlemleri gerçekleştirme.
  • Otomatik Değer: Oda artık belirtmeyi destekliyor Otomatik Değer ek açıklamalı sınıflara varlık ve POJO'lar olarak eklenir. Oda ek açıklamaları @PrimaryKey, @ColumnInfo, @Embedded ve @Relation artık otomatik olarak tanımlanabilir değer ek açıklamalı sınıfın soyut yöntemlerini kullanır. Bu ek açıklamanın Odanın doğru bir şekilde anlaması için @CopyAnnotations buna eşlik etmelidir.
  • Ek Eşzamansız Destek: @Insert, @Delete ek açıklamalı DAO yöntemleri veya @Update; INSERT, DELETE veya UPDATE içeren @Query ile birlikte ifadeleri, artık Completable, Single, Maybe ve Rx iade türlerini destekliyor. ve Guava'nın dönüş türü ListenableFuture. Ayrıca askıya alınabilirler. işlevlerine dahildir.
  • enableMultiInstanceInvalidation, RoomDatabase.Builder ürününde şu amaçlarla kullanılan yeni bir API'dir: aynı kullanılarak birden fazla RoomDatabase örneğinde geçersiz kılmayı etkinleştir veritabanı dosyası olarak kullanabilirsiniz.
  • fallbackToDestructiveMigrationOnDowngrade, şurada yeni bir API'dir: Eski sürüme geçilirse veritabanını otomatik olarak yeniden oluşturmak için RoomDatabase.Builder yaşanır.
  • ignoredColumns, @Entity ek açıklamasındaki yeni bir API'dir. yoksayılan alanları ada göre listeleyin.
  • Oda, artık veri sınıflarında Kotlin'in birincil oluşturucusunu düzgün bir şekilde kullanacaktır Böylece tesisleri vars olarak tanımlamak zorunda kalmazsınız.

Sürüm 2.1.0-rc01

29 Mayıs 2019

Hata Düzeltmeleri

  • Halihazırda kurulum aşamasından dolayı oluşabilecek Oda başlatma hatası düzeltildi temp_store yapılandırması. b/132602198
  • SQLite 3.27.0 ve sonraki sürümlere sahip kullanıcılar için çift tırnak işareti kullanım uyarısı düzeltildi. b/131712640
  • Birden fazla Buna paralel olarak geçersiz kılma kontrolleri de yapılır. b/133457594

Sürüm 2.1.0-beta01

7 Mayıs 2019

androidx.room 2.1.0-beta01, 2.1.0-alpha07 arasında herhangi bir değişiklik yapılmadan yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.

Sürüm 2.1.0-alpha07

25 Nisan 2019

API / Davranış Değişiklikleri

  • RoomDatabase.withTransaction uzantı işlevi şu şekilde değiştirildi: artık alıcı olarak CoroutineScope olan bir işlev bloğu almıyor. Bu, ek coroutineScope { } sarmalayıcısının atlanmasını önler işlem bloğundaki öğeleri eş zamanlı olarak çalıştırmak için gereklidir.

Hata Düzeltmeleri

  • Odanın, Kotlin DAO için TypeConverter dosyasıyla eşleşmemesine neden olan hata düzeltildi işlevi (Koleksiyon türü parametresi) içerir. b/122066791

Sürüm 2.1.0-alpha06

22 Mart 2019

API / Davranış Değişiklikleri

  • Eşzamansız işlem sorguları artık Odanın işlem yapmayacağı şekilde serileştirildi. Veritabanı işlemlerini yürütmek için birden fazla iş parçacığı. İzin vermek için RoomDatabase.Builder.setTransactionExecutor(Executor) eklendi yürütücüyü, işlemler için kullanılacak şekilde yapılandırmalısınız.
  • RoomDatabase.runInTransaction(Callable) artık işaretli değil istisnaları RuntimeExceptions'a devre dışı bırakılır. b/128623748

Hata Düzeltmeleri

  • Geçersiz kılma izleyicinin içeriği gözlemlemeyi durdurmasına neden olan hata düzeltildi hem içerik tablosu hem de harici içerik için gözlemciler FTS tablosuysa tablo eklendi. b/128508917
  • Odanın SQLite dil bilgisi, SQLite 3.24.0 ile eşleşecek şekilde güncellendi. b/110883668

Sürüm 2.1.0-alpha05

13 Mart 2019

Yeni Özellikler

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

API / Davranış Değişiklikleri

  • room-coroutines yapısı, diğer androidx yapılarıyla aynı ada sahip olacak şekilde room-ktx olarak yeniden adlandırıldı.
  • RoomDatabase bölgesindeki beginTransaction, setTransactionSuccessful ve endTransaction desteği sonlandırılarak runInTransaction ve room-ktx uzantı işlevi withTransaction kullanılmaya başlandı.

Hata Düzeltmeleri

  • Kullanılan jeton oluşturucu SIMPLE ise jeton oluşturucu bağımsız değişkenlerinin bırakılmasına neden olan hata düzeltildi. b/125427014
  • Odanın, iç sınıf olan parametrelere sahip askıya alma işlevlerini doğru şekilde tanımlayamamasına neden olan hata düzeltildi. b/123767877
  • INSERT, UPDATE veya DELETE ifadelerine sahip ertelenen @Query DAO yönteminin, sorguyu ana iş parçacığında istekli bir şekilde hazırlamasına neden olan hata düzeltildi. b/123695593
  • Odanın 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
  • Kullanımdan kaldırılan yöntem kullanımının, oluşturulan kodda doğru şekilde gösterilmemesine neden olan hata düzeltildi. b/117602586
  • androidx.sqlite öğesinin Oda bağımlılığı 1.0.2 olarak güncellendi. Yeni sürümle birlikte, bozuk veritabanlarını doğru şekilde işlemeye yönelik düzeltmeler yapıldı. b/124476912

Bilinen Sorunlar

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

Sürüm 2.1.0-alpha04

25 Ocak 2019

Yeni Özellikler

  • INSERT, UPDATE veya DELETE ifadeleri içeren @Query ek açıklamasıyla birlikte DAO yöntemleri artık Single, Mayble, Completable ve ListenableFuture eşzamansız türlerini döndürebiliyor. Buna ek olarak, askıya alma işlevleri de olabilirler. b/120227284

API / Davranış Değişiklikleri

  • @Transaction ile not eklenmiş soyut olmayan bir DAO yöntemi Single, Mayble, Completable, LiveData veya ListenableFuture gibi eşzamansız bir tür döndürürse oda artık bir hata verir. İşlemler iş parçacığıyla sınırlı olduğundan şu anda Odanın, farklı ileti dizilerinde sorgular gerçekleştirebilecek bir işlevle ilgili işlem başlatması ve sonlandırması mümkün değildir. b/120109336
  • OnConflictStrategy.FAIL ve OnConflictStrategy.ROLLBACK, Android'in mevcut SQLite bağlamalarıyla amaçlandığı gibi davranmadığı için @Deprecated. b/117266738

Hata Düzeltmeleri

  • DAO yöntemi bir askıya alma işlevi olduğunda Room'un bir dönüş türünün TypeConverter öğesini doğru şekilde kullanmamasına neden olan hata düzeltildi. b/122988159
  • Odanın devralınan askıya alma işlevlerini yanlışlıkla askıya alma işlemi olarak tanımlamasına neden olan hata düzeltildi. b/122902595
  • @Embedded alanı bir üst sınıfta ve birden fazla alt sınıfta kullanıldığında Odanın yanlış kod oluşturmasına neden olan hata düzeltildi. b/121099048
  • beginTransaction() ile endTransaction() arasında DAO askıya alma işlevleri çağrılırken 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 Dize alıyor. Bu, özel tokenleştiricilerin Room tarafından kullanılmasına olanak tanır. Yerleşik jeton oluşturucuları, FtsOptions öğesinde dize sabitleri olarak tanımlanmaya devam ediyor. b/119234881

Yeni Özellikler

  • Ders içerikleri: DAO yöntemleri artık askıya alma işlevleri olabilir. Odada askıya alma işlevlerini desteklemek için room-coroutines adlı yeni bir yapı yayınlandı. b/69474692
  • @Insert, @Delete veya @Update ek açıklamalarıyla eklenen DAO yöntemlerinde artık dönüş türü olarak ListenableFuture desteklemektedir. b/119418331

Hata Düzeltmeleri

  • Odanın yanlışlıkla @Entity öğesinin ignoredColumns özelliğinde sütunlara sahip bir oluşturucu bulmaya çalışmasına neden olan hata düzeltildi. b/119830714
  • Odanın, DAO yöntemi parametrelerini oluşturulan uygulamada nihai olarak işaretlememesine neden olan hata düzeltildi. b/118015483
  • Özel simgeler içeren bir sorguda hata bildirirken Oda işlemcisinin kilitlenmesine neden olan hata düzeltildi. b/119520136
  • Odanın, IN ifadesinin bağımsız değişkenleri olarak diğer çeşitli Collection uygulamalarını reddetmesine neden olan hata düzeltildi. b/119884035
  • Odadan döndürülen LiveData'nın sonsuza kadar gözlemlendiğinde atık toplanması ve bu nedenle artık yeni veri yayınlamamasına yol açan hata düzeltildi. b/74477406
  • Kilit anlaşmazlığını azaltmak için RoomDatabase özelliğinin kapatma kilidi güncellendi. b/117900450

Sürüm 2.1.0-alpha02

30 Ekim 2018

Yeni Özellikler

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

Hata Düzeltmeleri

  • Odanın, bir Rx dönüş türüne abone olurken ve bu türü atarken ana iş parçacığında disk G/Ç işlemi gerçekleştirmesine neden olan hata düzeltildi. b/117201279
  • Odanın, Kotlin varlık sınıfındaki bir alan için uygun tür bir dönüştürücü bulamamasına neden olan hata düzeltildi. b/111404868
  • Odanın, bağımsız değişkeni olmayan 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
  • Odanın SQLite dil bilgisi ayrıştırıcısı güncellendi ve uzun derleme sürelerine neden olabilecek bir performans sorunu düzeltildi. b/117401230

Sürüm 2.1.0-alpha01

8 Ekim 2018

Yeni Özellikler

  • FTS: Oda, artık FTS3 veya FTS4 eşleme tablosuna sahip varlıkları destekliyor. @Entity ile not eklenen sınıflara artık eşleme tam metin arama tablosu içeren bir sınıfı bildirmek için @Fts3 veya @Fts4 ile ek açıklama eklenebilir. Daha fazla özelleştirme için FTS seçenekleri, ek açıklama yöntemleriyle kullanılabilir. b/62356416
  • Görünümler: Oda artık bir sınıfın depolanmış sorgu olarak (@DatabaseView ek açıklaması kullanılarak görünüm) tanımlanmasını destekliyor. b/67033276
  • Otomatik değer: Oda, AutoValue ek açıklamalı sınıfların varlık ve POJO olarak tanımlanmasını destekliyor. @PrimaryKey, @ColumnInfo, @Embedded ve @Relation oda ek açıklamaları artık otomatik değer ek açıklaması olan sınıfın soyut yöntemlerinde tanımlanabilir. Odanın doğru bir şekilde anlayabilmesi için bu ek açıklamayla birlikte @CopyAnnotations öğesinin de eklenmesi gerektiğini unutmayın. b/62408420
  • Ek Rx Dönüş Türleri Desteği: @Insert, @Delete veya @Update ile ek açıklamalı DAO yöntemleri, artık Completable, Single<T> ve Maybe<T> Rx dönüş türlerini desteklemektedir. b/63317956
  • @Relation İçeren Sabit Türler: Odada, daha önce @Relation ek açıklamalı alanın ayarlanabilir olması gerekiyordu ancak artık kurucu parametreler olabilirler.
  • enableMultiInstanceInvalidation: RoomDatabase.Builder ürününde aynı veritabanı dosyası kullanılarak birden fazla RoomDatabase örneğinde geçersiz kılma işlemi yapılmasını sağlayan yeni bir API'dir. Bu çok örnekli geçersiz kılma mekanizması, birden fazla işlemde de çalışır. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: RoomDatabase.Builder ürününde, eski sürüme geçilmesi durumunda veritabanını otomatik olarak yeniden oluşturan yeni bir API'dir. b/110416954
  • ignoredColumns: @Entity ek açıklamasında, yoksayılan alanları ada göre listelemek için kullanılabilen yeni bir API'dir. Bir varlıktaki devralınan alanları yoksaymak için kullanışlıdır. b/63522075

API / Davranış Değişiklikleri

  • RoomDatabase kapsamındaki mCallback ve mDatabase artık @Deprecated ve Odanın bir sonraki ana sürümünde kaldırılacak. b/76109329

Hata Düzeltmeleri

  • Odanın bozuk bir veritabanından düzgün şekilde kurtarılamamasına veya başlatma sırasında hatalı bir taşıma işlemine neden olan iki sorun düzeltildi. b/111504749 ve b/111519144
  • Oda, veri sınıflarında Kotlin'in birincil oluşturucusunu düzgün şekilde kullanır. Böylece, alanları vars olarak belirtme ihtiyacı ortadan kalkar. 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 arasında 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ünde herhangi bir değişiklik yapılmadan yayınlandı.

Sürüm 2.0.0-beta01

2 Temmuz 2018

API / Davranış Değişiklikleri

  • Sorguların çalıştırıldığı yerin özelleştirilmesine olanak tanımak için RoomDatabase.Builder.setQueryExecutor() eklendi
  • RxJava2 Observable desteği eklendi
  • Oluşturulan DAO ve Veritabanı uygulamaları artık nihai

Hata Düzeltmeleri

  • "Alan için alıcı bulunamıyor" bölümünde sınıf/alan adını belirtin hata b/73334503
  • RoomOpenHelper'ın, Oda b/110197391'in eski sürümleriyle geriye dönük uyumluluğu düzeltildi

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 adlı oda, 1.1.1-rc1 adlı Oda ile aynı.

Sürüm 1.1.1-rc1

16 Mayıs 2018 Son derece taşıma işlemini kullanıyorsanız 1.1.0 yerine 1.1.1-rc1 Odasının kullanılmasını öneririz.

Odanın, taşıma sonrası başlatma işlemini 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, şuna sahip bir ilişki varlığına referans verdiğinde derleme hatasını düzeltin: Java'da b/78199923'te tanımlandı

Sürüm 1.1.0-beta2

5 Nisan 2018

Hata Düzeltmeleri

  • Room'un Rx Single ve Maybe uygulamalarında sorguyu önceden geri dönüştürür ve gözlemciyi, döndürülen Single veya Maybe değerleriyle ilişkilendirebilirsiniz. b/76031240

  • [RoomDatabase.clearAllTables][ref-clearAllTables], çağrılması durumunda veritabanına VACUUM işlemi uygulamaz olabilir. b/77235565

Sürüm 1.1.0-beta1

21 Mart 2018

API Değişiklikleri

  • API İncelemesi geri bildirimine dayanarak @RawQuery artık sorgu parametresi olarak String iletmeyi 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]'ye bakın.)
  • RoomDatabase.Builder'ın [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] yöntemi, vararg Integer yerine vararg int yöntemini kabul ediyor.

Hata Düzeltmeleri

  • [RoomDatabase.clearAllTables][ref-clearAllTables] artık bir WAL kontrol noktası ayarlayıp VACUUM veritabanını kullanarak işletim sistemine geri alan döndürmeye çalışır.
  • [@RawQuery][ref-RawQuery], Embedded alanları veya Relation'leri aracılığıyla bir veya daha fazla varlığa referans verdiği sürece artık observedEntities mülkü için tüm Pojo'ları kabul ediyor. b/74041772
  • Sayfalandırma: Odanın DataSource uygulaması artık birden çok tablo içeren bağımlılıkları (ilişkiler ve birleştirmeler gibi) 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 ürünündeki bu yeni API şunlara olanak tanır: Hangi şema sürümlerindeki yıkıcı taşıma işlemlerinin başlatılacağı konusunda daha ayrıntılı kontrol izin verilir (fallbackToDestructiveMigration ile karşılaştırıldığında) b/64989640
  • Oda artık yalnızca daha yeni Paging API'lerini (alfa-4+) destekliyor. LivePagedListProvider Yeni Oda alfa sürümünü kullanmak için sayfalama özelliğini kullanmanız gerekir alpha-4 veya daha yüksek ve henüz yapmadıysanız LivePagedListProvider değerinden LivePagedListBuilder değerine geçiş yapın.

Hata Düzeltmeleri

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