Room

Oda kalıcılık kitaplığı, SQLite üzerinde bir soyutlama katmanı sağlar. Böylece, daha güçlü veritabanı erişimi sağlarken SQLite'ın tüm gücünden yararlanır.
Son Güncelleme Kararlı Sürüm Serbest Bırakma Adayı Beta Sürümü Alfa Sürümü
29 Kasım 2023 2.6.1 - - -

Bağımlılıkları bildirme

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

Room bağımlılıkları arasında test odası taşıma işlemleri ve Room RxJava yer alır.

Uygulamanızın veya modülünüz için build.gradle dosyasına ihtiyaç duyduğunuz yapıların bağımlılıklarını ekleyin:

Modern

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 dokümanlarına bakın.

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

Kotlin uzantılarını kullanma hakkında bilgi edinmek için ktx belgelerini inceleyin.

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

İsteğe bağlı olarak, Android dışı kitaplıklarda (ör. Java veya yalnızca Kotlin modülleri) Oda ek açıklamalarını kullanmak için androidx.room:room-common hizmetine güvenebilirsiniz.

Derleyici Seçeneklerini Yapılandırma

Odada aşağıdaki ek açıklama işlemcisi seçenekleri var.

room.schemaLocation directory
Veritabanı şemalarının belirtilen dizindeki JSON dosyalarına aktarılmasını etkinleştirir. Daha fazla bilgi için Oda Taşıma İşlemleri bölümüne bakın.
room.incremental boolean
Gradle artımlı ek açıklama işlemcisini etkinleştirir. true, varsayılan değerdir.
room.generateKotlin boolean
Java yerine Kotlin kaynak dosyaları oluşturun. KSP gerektirir. 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 sürüm 2.6.0 ve sonraki sürümlerde, Oda derleyicisi seçeneklerini yapılandırmak için Room Gradle Eklentisi'ni kullanabilirsiniz. Eklenti, projeyi, yeniden oluşturulabilir ve önbelleğe alınabilir derlemelere sahip olacak şekilde doğru şekilde yapılandırılan şemalar (derleme görevlerinin çıktısı olan ve otomatik taşımalar için tüketilen) oluşturacak şekilde yapılandırır.

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

Modern

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.

Modern

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, Oda derleyicisini ve çeşitli derleme görevlerini ve arka uçlarını (javac, KAPT, KSP) yapılandırarak şema dosyalarını farklı klasörlerde (örneğin, schemas/flavorOneDebug/com.package.MyDatabase/1.json) farklı klasörlerde oluşturur. Bu dosyalar, doğrulama ve otomatik taşıma işlemlerinde kullanılacak kod deposuna kaydedilmelidir.

Bazı seçenekler, Oda derleyicisi tarafından desteklenseler bile Room Gradle Eklentisinin tüm sürümlerinde yapılandırılamaz. Aşağıdaki tabloda her bir seçenek listelenmekte ve room uzantısını kullanarak bu seçeneği yapılandırma desteği sunan Room Gradle Eklentisi 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şlemci seçeneklerini kullanabilirsiniz.

Seçenek Sürümden beri
room.schemaLocation (zorunlu) 2.6.0
room.incremental -
room.generateKotlin -

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

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

Modern

// 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 tür değil, bir dizin olduğundan Gradle'ın güncel kontroller gerçekleştirirken bu dizinden haberdar olması için bu seçeneği eklerken bir CommandLineArgumentsProvider kullanılması gerekir. Migrate your Room veritabanı, şema konumunu sağlayan CommandLineArgumentsProvider öğesinin eksiksiz bir uygulamasını gösterir.

Geri bildirim

Geri bildiriminiz Jetpack'i daha iyi hale getirmemize yardımcı oluyor. Yeni sorunlar keşfederseniz veya bu kitaplığı nasıl geliştirebileceğimizle ilgili fikirleriniz varsa 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 sayı oluşturma

Daha fazla bilgi için Sorun İzleyici belgelerine bakı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 kayıtları içerir.

Hata Düzeltmeleri

  • Oluşturulan kodda, EntityCursorConverter sütunundaki Çift sütunlarının varsayılan değerinin 0,0 yerine 0 olarak ayarlanmasına ilişkin sorun giderildi. Kayan reklam türündeki sütunlarda benzer bir kenar durumu için olası bir düzeltme de dahil edilmiştir. (Id75f5, b/304584179)
  • PagingSource yüklemelerden kaynaklanan istisnalar, artık Atılabilir öğeyi içeren LoadStateUpdate/LoadResult.Error olarak yayılacak. Bu hata durumu, PagingDataAdapter.loadStateFlow(Views) veya LazyPagingItems.loadState(Compose) aracılığıyla gözlemlenebilir. Bunun, geçmişteki yükleme hatalarının, yüklemeyi tetikleyen dao yöntemi tarafından oluşturulan bir İstisna olarak kabaracağı bir davranış değişikliği olduğunu 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 kayıtları içerir.

2.5.0'dan sonraki önemli değişiklikler

  • Kotlin kod oluşturmayı (veya "Kotlin CodeGen") etkinleştirme seçeneği artık Oda KSP'sinde kullanılabilir. (4297ec0). Odada Kotlin CodeGen'i etkinleştirmek için KSP işlemci seçeneklerinize room.generateKotlin seçenek adını ekleyin. KSP'nin işlemci seçeneklerini nasıl ileteceğiniz hakkında daha fazla bilgi için KSP dokümanlarına bakın.

Not: Kotlin CodeGen kullanırken ek kısıtlamaların olduğunu unutmamak gerekir. Kotlin CodeGen'de DAO alıcıları veya DAO sorguları olarak soyut özelliklere izin verilmez ve bunun yerine, özellik değerinin sabit olduğu ve sabit bir sonuç sakladığı düşüncesini önlemek için işlev olarak yeniden yazılması beklenir. Eklenen bir başka kısıtlama da Kotlin Kod Oluşturma için Odada artık Nullable koleksiyon döndürme türlerine izin verilmemesidir.

Uyarı: Kotlin Kod Oluşturma Aracı'nı kullanırken projelerinizin boş değer atanabilirliği açısından daha katı olduğunu görebilirsiniz. Kotlin CodeGen'de tür bağımsız değişkenlerin boş değerliliği önemlidir. Java'da bu genellikle 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 işlem, Java CodeGen'de herhangi bir soruna neden olmaz ancak Kotlin CodeGen'de hata mesajı alırsınız. Bunu önlemek için, boş değer yayınlandığını varsayarsak "Akış<foo?\>" öğesini kullanmanız gerekir. </foo?\></foo\>

  • Room Gradle Eklentisi için yeni yapı, androidx.room kimlikli Odaya eklendi. Bu yapı, Gradle ek açıklama işlemcisi seçenekleri aracılığıyla şema giriş ve çıkışlarının bulunmasıyla ilgili olarak Room'daki mevcut çeşitli sorunları çözüyor. Daha ayrıntılı bilgi için Oda Sürümü 2.6.0-alpha02 sürüm notlarına bakın.
  • Oda Varlıklarındaki değer sınıfları artık KSP için desteklenmektedir. (4194095)
  • DAO işlevlerindeki iç içe yerleştirilmiş harita dönüş türleri artık Odada desteklenmektedir. (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 kayıtları içerir.

Sürüm 2.6.0-beta01

23 Ağustos 2023

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

Hata Düzeltmeleri

  • Bir upsert sırasında 2067 SQLITE_CONSTRAINT_UNIQUE istisnası atlandığında, upsert sırasında karşılaşılan SQLite özel durum istisnası ele alınıyorsa upsert bir 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 yayınlandı. 2.6.0-alpha03 sürümü bu kayıtları içerir.

Yeni Özellikler

  • DAO işlevlerindeki iç içe yerleştirilmiş harita dönüş türleri artık Odada desteklenmektedir. (I13f48, 203008711)

API Değişiklikleri

  • @MapInfo yerine artık @MapColumn adında yeni bir tür ek açıklama oluşturuldu ve bu ek açıklama kullanımdan kaldırıldı. Bir @MapInfo ek açıklamasında sağlanan her 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çinde doğrudan tür bağımsız değişkeninde kullanılmasıdır. Daha fazla bilgi için lütfen @MapColumn belgelerine bakın. (Ib0305, b/203008711)
  • API dosyaları uyumluluğu engellemeye ek açıklama ekleyecek şekilde güncellendi (I8e87a, b/287516207)
  • Room Gradle eklenti API'leri, her zaman varyant başına yapılandırma gerektirmeyecek şekilde güncellendi. Bu, eklentinin birden fazla dizin oluşturmadan tüm varyantlar için genel bir konum kabul edebileceği anlamına gelir. Böylece, daha kolay taşıma işlemleri gerçekleştirebilir, ancak aynı zamanda eklentinin avantajlarını (yeniden oluşturulabilir ve önbelleğe alınabilir derlemeler) korurken türlerin manuel olarak yapılandırılması veya derleme türü şemaları için de esnektir. (I09d6f, b/278266663)

Hata Düzeltmeleri

  • QueryInterceptorStatement uygulamasında olası bellek sızıntısı güvenlik açığı düzeltildi. (I193d1)
  • QueryInterceptorDatabase execSQL() işlevindeki yanlış 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 kayıtları içerir.

Room Gradle Eklentisi

Bu yeni sürüm, androidx.room kimliğine sahip Room Gradle Eklentisi için yeni bir yapı içerir. Bu yapı, Gradle ek açıklama işlemcisi seçenekleri aracılığıyla şema giriş ve çıkışlarının bulunmasıyla ilgili mevcut çeşitli sorunları çözmektedir. Room Gradle Eklentisi, otomatik taşımalar için tüketilen şemalar oluşturacak ve derleme görevlerinin çıktısı olan şemaları, yeniden oluşturulabilir ve önbelleğe alınabilir derlemelere sahip olacak şekilde doğru şekilde yapılandıracak şekilde projeyi yapılandırır. Eklenti, temel şema konumunu yapılandırmak için bir DSL sunar:

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

Ardından eklenti, şema dosyalarını farklı klasörlerde (ör. schemas/flavorOneDebug/com.package.MyDatabase/1.json) oluşturmak için Room derleyicisini, çeşitli derleme görevlerini ve arka uçlarını (javac, KAPT, KSP) yapılandırır. Her zaman olduğu gibi bu dosyalar, doğrulama ve otomatik taşıma işlemleri için kullanılmak üzere kod deposuna giriş yapar. Ek açıklama işlemcisi seçenekleri yerine eklenti kullanılarak taşımanın ardından, mevcut şema dosyalarının eklenti tarafından oluşturulan tür dizinlerine kopyalanması gerekir. Bu, manuel olarak yapılması gereken tek seferlik bir taşıma işlemidir. Gelecekte geri bildirimler dikkate alınıp eklenti kararlı hale geldikten sonra developers.android.com adresindeki şema dokümanları güncellenecektir. Lütfen tekrar deneyin.

API Değişiklikleri

  • RoomDatabase.QueryCallback, SAM dönüşüm kullanımlarına olanak tanıyan 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 veritabanını Robolectric'te somutlaştırırken ortaya çıkan sorunu çö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 kayıtları içerir.

Yeni Özellikler

  • KSP için Room'da değer sınıflarını destekleme. Room artık Öğeler'de değer sınıflarını destekleyebilir. (4194095)
  • Kotlin kodu oluşturma(veya "Kotlin Kod Oluşturma") artık Odada (4297ec0) etkinleştirilebilir. Odada Kotlin CodeGen'i etkinleştirmek için KSP işlemci seçeneklerinize room.generateKotlin seçenek adını ekleyin. KSP'nin işlemci seçeneklerini nasıl ileteceğiniz hakkında daha fazla bilgi için KSP dokümanlarına bakın.

Not: Kotlin CodeGen kullanırken ek kısıtlamaların olduğunu unutmamak gerekir. Kotlin CodeGen'de DAO alıcıları veya DAO sorguları olarak soyut özelliklere izin verilmez ve bunun yerine, özellik değerinin sabit olduğu ve sabit bir sonuç sakladığı düşüncesini önlemek için işlev olarak yeniden yazılması beklenir. Eklenen bir başka kısıtlama da Kotlin Kod Oluşturma için Odada artık Nullable koleksiyon döndürme türlerine izin verilmemesidir.

Uyarı: Kotlin Kod Oluşturma Aracı'nı kullanırken projelerinizin boş değer atanabilirliği açısından daha katı olduğunu görebilirsiniz. Kotlin CodeGen'de tür bağımsız değişkenlerin boş değerliliği önemlidir. Java'da bu genellikle 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 işlem, Java CodeGen'de herhangi bir soruna neden olmaz ancak Kotlin CodeGen'de hata mesajı alırsınız. Bunu önlemek için, boş değer yayınlandığını varsayarsak "Akış<foo?\>" öğesini kullanmanız gerekir. </foo?\></foo\>

API Değişiklikleri

  • DAO yöntemi döndürme türlerinde boş değerli koleksiyonların anlamsız kullanımına karşı koruma sağlar. (I777dc, b/253271782, b/259426907)
  • Geçersiz kılma izleyicide değişiklikler yapan 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 kodlayıcıda DAO alıcıları veya DAO sorguları olarak soyut özelliklere izin vermeyin. Özellik değerinin sabit olduğu ve sabit bir sonuç sakladığı iddiasından kaçınmak için işlev olarak yeniden yazılmalıdır. (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 kayıtları içerir.

Hata Düzeltmeleri

  • kotlinx-metadata-jvm ile ilgili uyumsuzluk sorununu düzeltin. (386d5c)
  • Bir Robolectric testinde kullanılırken Room'un hata vermesine neden olan bir sorunu düzeltin. (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 kayıtları içerir.

Hata Düzeltmeleri

  • Veritabanı zaten açıksa FrameworkSQLiteHelper içindeki veritabanı üst dizinini kontrol etmekten kaçının. (5de86b8)
  • Veritabanının açık olup olmadığını kontrol ederken bir isOpenInternal kontrolü kullanın. (e91fb35)
  • Artık Odanın acquireTransactionThread() hesabında, tekrar katılan destek kaydının daha iyi işlenmesi mümkün. (219f98b). Askıya alma işlemi sırasında Room, işlem yürütücüsünden bir iş parçacığı kullanır, içinde bir etkinlik döngüsü başlatır ve askıya alınan veritabanı işlemlerini bu işleme gönderir. Böylece tüm bu işlemler, işlem eş yordamı içine alınır. Genellikle işlem iş parçacığının işlemi başlatan ileti dizisinden farklı olması beklenir, ancak bazı durumlarda aynıdır. Bu tür yeniden girişlerin ele alınması için withTransaction(), artık bir kontrol işine bağlı olmayacak şekilde yeniden düzenlendi. Bunun yerine, askıya alma işlemi 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ı. Sürüm 2.5.0 bu kayıtları içerir.

Sürüm 2.5.0

11 Ocak 2023

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

2.4.0'dan sonraki ö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, kaynakla ilgili uyumsuz değişiklik olduğu bilinen bir değişiklik şudur: InvalidationTracker için Observer içindeki onInvalidate() öğesini, MutableSet yerine Set türünde bir parametreye sahip olacak şekilde bildirmeniz gerekir. 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 varlık eklemeye veya çakışma varsa varlığı güncellemeye çalışan yeni bir kısayol ek açıklaması (@Upsert) eklendi. (I7aaab, b/241964353)
  • Odaya Sayfalama'da destek sunulması için yeni oda sayfalandırma yapıları room-paging-rxjava2, room-paging-rxjava3 ve room-paging-guava eklendi.
  • @MapInfo ürününde belirsizliği gidermek için anahtar ve değer tablosu adları sağlamak üzere API'ler eklendi (Icc4b5)

Sürüm 2.5.0-rc01

7 Aralık 2022

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

API Değişiklikleri

  • Java'nın dizi davranışıyla eşleşmesi için sorgu bağımsız değişkenlerini sabit değerden (Array<Any?>) karşıt değişkene (Array<out Any?>) dönüştüren ç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ı. 2.5.0-beta01 sürümü bu kayıtları içerir.

API Değişiklikleri

  • @Upsert uygulamasını destekleyen minimum sürümü API 16 olacak şekilde kısıtlayın. Bunun nedeni, eski API'lerde birincil anahtar kısıtlaması çakışmasının tanımlanamamasıdır. (I5f67f, b/243039555)

Hata Düzeltmeleri

  • Gölge tabloların, şema .json dosyalarına yanlış şekilde aktarılarak onları bozması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ı. 2.5.0-alpha03 sürümü bu kayıtları içerir.

Yeni Özellikler

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

Hata Düzeltmeleri

  • Oda artık otomatik taşıma yabancı anahtar kısıtlama kontrolü sırasında IllegalStateException yerine bir SQLiteConstraintException yanıtı verecek. (I328dd)
  • getOpenHelper, getQueryExecutor ve getTransactionExecutor alıcıları / özellikleri için Kotlin kaynağıyla ilgili uyumsuz 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 kayıtları içerir.

Yeni Özellikler

API Değişiklikleri

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

    Not: Kitaplığın 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, kaynakla ilgili uyumsuz değişiklik olduğu bilinen bir değişiklik şudur: InvalidationTracker için Observer içindeki onInvalidate() öğesini, MutableSet yerine Set türünde bir parametreye sahip olacak şekilde bildirmeniz gerekir.

  • @MapInfo ürününde belirsizliği gidermek için anahtar ve değer tablosu adları sağlamak üzere 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ünürlüğü sezgisel algoritması. Oda artık çok eşlemeli bir sorgudaki belirsiz sütunları çözmeye çalışacak. Bu, aynı adlı tablolar içeren tablolara sahip JOIN'lerin, bir sonuç veri nesnesiyle doğru bir şekilde eşlenmesini sağlar. (I4b444, b/201306012, b/212279118)

Sürüm 2.5.0-alpha01

23 Şubat 2022

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

API Değişiklikleri

  • Oda @IntDef kullanımının Kotlin kaynaklarında zorunlu tutulmamasına neden olan sorun düzeltildi. (I75f41, b/217951311)
  • Mülk alıcılarında @Query öğesine yeniden izin verilmesini sağlayan bir kaynak uyumluluğu sorunu düzeltildi. (I0a09b)
  • "Oda-common" alanı, Java'dan Kotlin'e dönüştürüldü. (I69c48, b/206858235)

    Not: Kitaplığı Kotlin'e dönüştürme işlemi sırasında bazı mülkler tamamlayıcı nesnelere taşındığı için kaynak uyumsuzluğu sorunlarıyla karşılaşabilirsiniz. Kodunuz Kotlin'deyse ve Room'un eski sürümünü çağırıyorsa bu özelliklere erişirken yeni sürümde ".Companion" son ekinin kullanılması gerekir.

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

Hata Düzeltmeleri

  • Kotlin kaynaklarında dahili mülkler için destek eklendi. Bu, Odada küçük bir davranış değişikliğidir. Bu değişiklik, işlevlerin kaynak adlarını kullanarak bunları alıcı/belirleyici olarak mülklerle eşleştirir (önceden, dahili işlevler/özellikler için farklı olan işlevin JVM adını kullanıyordu). Alıcıları/ayarlayıcıları özel mülklerle eşleştirmek için özel @JvmName ek açıklamaları kullanıyorsanız lütfen oluşturulan kodu güncellemeden sonra 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 yayınlandı. 2.4.3 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Room'un Kotlin 1.7'de askıya alma işlevlerini tanımamasına neden olan bir 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 yayınlandı. 2.4.2 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • -Xjvm-default=all veya eşdeğeri ile yapılan derleme nedeniyle varsayılan arayüz yöntemi oluşturan bir gövdeye sahip Dao @Transaction askıya alma işlevi için kod üretme sorunu düzeltildi. (Ia4ce5)
  • Room'un 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ı. 2.4.1 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Kotlin kaynaklarında dahili mülkler için destek eklendi. Bu, Odada küçük bir davranış değişikliğidir. Bu değişiklik, işlevlerin kaynak adlarını kullanarak bunları alıcı/belirleyici olarak mülklerle eşleştirir (önceden, dahili işlevler/özellikler için farklı olan işlevin JVM adını kullanıyordu). Alıcıları/ayarlayıcıları özel mülklerle eşleştirmek için özel @JvmName ek açıklamaları kullanıyorsanız lütfen oluşturulan kodu güncellemeden sonra 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 yayınlandı. 2.4.0 sürümü bu kayıtları içerir.

2.3.0'dan sonraki önemli değişiklikler

  • Otomatik Taşıma İşlemleri: Oda artık, şemalar dışa aktarıldığı sürece taşıma işlemlerinin otomatik olarak oluşturulması için bir API sunmaktadır. Room'a otomatik taşıma oluşturması gerektiğini bildirmek için iki sürüm arasında otomatik olarak taşınacak sürümleri bildirmek üzere @Database#autoMigrations adlı yeni bir özelliği kullanabilirsiniz. Room; tablo ve sütun yeniden adlandırma veya silme işlemleriyle 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 Yerleştirme: @ProvidedAutoMigrationSpec, çalışma zamanında RoomDatabase.Builder#addAutoMigrationSpec() aracılığıyla bir AutoMigrationSpec sağlanacağını beyan eden yeni bir API'dir. Bu, bir bağımlılık yerleştirme çerçevesinin karmaşık bağımlılıklara ihtiyaç duyduklarında bu tür özellikler sağlamasına olanak tanır.
  • Otomatik Taşıma İşlemleri için Taşıma Test Yardımcısı Desteği: Odadaki MigrationTestHelper, test edilen veritabanı sınıfını alan yeni bir oluşturucu API sağlayarak otomatik taşımaları destekleyecek şekilde güncellendi. Bu sayede yardımcı, runMigrationsAndValidate sırasında aynı şekilde otomatik taşıma işlemi ekleyebilir.
  • Oda Çağrısı Desteği: androidx.paging.PagingSource değerini döndüren Oda sorguları için yerel Sayfalama 3.0 desteği sağlayan androidx.room:room-paging yayınlandı.
  • İlişkisel Sorgu Yöntemleri: Room artık JOIN ifadeleri için yararlı olan çoklu harita dönüş türü @Dao yöntemlerini destekliyor. Desteklenen çoklu harita türleri Map, SparseArray, LongSparseArray ile Guava'nın ImmutableMap, ImmutableSetMultimap ve ImmutableListMultimap'dir.

Sürüm 2.4.0-rc01

1 Aralık 2021

androidx.room:room-*:2.4.0-rc01 yayınlandı. 2.4.0-rc01 sürümü bu kayıtları içerir.

Yeni Özellikler

  • Kotlin 1.6'yı 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ı. 2.4.0-beta02 sürümü bu kayıtları içerir.

Yeni Özellikler

  • @MapInfo öğesine SparseArray ve LongSparseArray desteği ekledik. (Ic91a2b/138910317)

Hata Düzeltmeleri

  • Türlerdeki boş değerlilik bilgilerini dikkate alan yeni bir TypeConverter analizcisi ekledik. Bu bilgiler yalnızca KSP'de mevcut olduğundan, varsayılan olarak yalnızca KSP'de etkindir. Herhangi bir soruna neden olursa ek açıklama işlemcisineroom.useNullAwareTypeAnalysis=false ileterek özelliği kapatabilirsiniz. Bu durumda lütfen dosya hatası oluşturun. Bu bayrak ileride kaldırılacaktır. Bu yeni TypeConverter analiz aracı ile, yeni analiz aracının bunları null denetimiyle sarmalayabilme olanağı bulunduğundan, yalnızca null alan TypeConverter öğelerinin sağlanması önerilir. Bunun, ek açıklama işlemcisi olarak KAPT veya Java kullanan kullanıcılar (KSP'nin aksine) üzerinde herhangi bir etkisi olmadığını ve türlerde boş değer atanabilirlik bilgisinin bulunmadığını unutmayın. (Ia88f9, b/193437407)
  • Bir FTS varlığı, ICU jeton belirleyicisini kullandığını bildirdiğinde Room'un SQL hatasıyla derleme yapmasına neden olan hatayı düzeltin. (I00db9, b/201753224)
  • Sürümler arasında yerleştirilmiş bir varlığa yeni sütun eklenmesiyle ilgili otomatik taşıma işlemlerinde yaşanan sorun giderildi. (I5fcb1b/193798291)
  • LEFT JOIN sorgularında ilişkisel sorgu yöntemi döndürme türleriyle ilgili bir sorunu çözdük. Bu değişikliklerle, 1-çok eşlemenin mevcut olması durumunda, bir anahtar için döndürülen koleksiyon, imleçte bulunmayan geçersiz değer nesnesini içermez. Geçerli değer bulunamazsa bir anahtar, boş bir koleksiyona eşlenir. (Id5552b/201946438)
  • SQLite anahtar kelimelerinde sütun adlarında çıkış yapılamayan 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ı. 2.4.0-beta01 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • Aynı otomatik taşıma işlemindeki başka bir tabloda aynı ada sahip yeni bir sütun bulunduğunda otomatik taşıma işlemlerinde yeni sütun eklememesiyle ilgili sorun giderildi. (Ia5db5, b/200818663)
  • Oda sayfalandırma tarafından oluşturulan PagingSource uygulaması artık RoomDatabase.Builder üzerinden geçirilen queryExecutor parametresini kullandığından önceden 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 yayınlandı. 2.4.0-alpha05 sürümü bu kayıtları 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 açıktır, ancak bunları belirli bir kapsam veya veritabanının tamamı için devre dışı bırakabilirsiniz. Ayrıntılar için TypeConverters dokümanlarına bakın. (36ae9e, b/195413406)

  • @MapInfo ek açıklaması aracılığıyla DAO'larda çoklu eşleme dönüş türleri için POJO olmayan anahtar/değer çiftlerini 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>
  • Oda ile Paging3'ü kullanırken room-paging öğesini gerekli bir yapı haline getirin. (Ieaffe)

Hata Düzeltmeleri

  • Sorgu, harita anahtarından bir sütunun ORDER BY ifadesini içerdiğinde çoklu eşleme sorgu sonuçlarının doğru sıralanmadığı sorun giderildi. (I6b887)

Harici Katkı

  • @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 yayınlandı. 2.4.0-alpha04 sürümü bu kayıtları içerir.

Yeni Özellikler

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

    Aşağıda, çoklu eşleme sorgularına ilişkin ö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 Bir İ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 ayrıca LiveData, Rx Observable veya eş yordamlar Flow gibi desteklenen eşzamansız dönüş türlerinde de sarmalanabilir.

Odadan Çağrı

  • androidx.paging.PagingSource değerini döndüren Oda sorguları için yerel Sayfa 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ı Sayfa 3.0 API'leri üzerinde derlenmiş bir uygulamayla değiştirir. Yeni PagingSource uygulaması, anahtarları farklı şekilde ayrıştırdığından, Room'un PagingSource'a manuel olarak sağlanan herhangi bir anahtarın, Pager oluşturucusu aracılığıyla iletilen initialKey dahil olmak üzere bu davranış değişikliğini dikkate alması gerekir. Sayfalar Key konumundan yüklenmeye başlayacak. Yüklenen ilk öğe Key olacak. Bu, LoadParams.Refresh.Key öğesinin kullanıcının kaydırma konumu olarak değerlendirildiği ve öğelerin hem anahtardan önce hem de sonra yüklendiği mevcut davranıştan farklıdır.

  • Yapı isteğe bağlıdır ve devre dışı bırakma işlemi Oda 2.3'te kullanıma sunulan mevcut Sayfa 3.0 desteğine geçiş yapacaktır. Ancak bu yapı, Room with Paging 3.0 kullananlar için gelecekteki sürümde isteğe bağlı olmayacak. Etkinleştirmek için yeni oda sayfası 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

  • 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 kayıtları içerir.

API Değişiklikleri

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

Hata Düzeltmeleri

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

  • @Transaction işlevinin döndürme türü Akış (I56ddd, b/190075899) olduğunda Room'un hata vermemesi sorunu düzeltildi

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

Bağımlılık Güncellemeleri

  • Odanın KSP desteği artık 1.5.10-1.0.0-beta01 Servis Sağlayıcıya 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 yayınlandı. 2.4.0-alpha02 sürümü bu kayıtları içerir.

API Değişiklikleri

  • @ProvidedAutoMigrationSpec, çalışma zamanında RoomDatabase.Builder#addAutoMigrationSpec() aracılığıyla bir AutoMigrationSpec sağlanacağını beyan eden yeni bir API'dir. Bu, bir bağımlılık yerleştirme çerçevesinin karmaşık bağımlılıklara ihtiyaç duyduklarında bu tür özellikler sağlamasına olanak tanır.

Hata Düzeltmeleri

  • @DatabaseView dosyalarının düzgün bir şekilde yeniden oluşturulmadığı durumlarda otomatik taşıma işlemleriyle ilgili sorun giderildi.

Harici Katkı

  • Oda JournalMode.TRUNCATE hizmetinde, InvalidationTracker geri çağırma işlevinin bazen geçersiz bir şekilde, çok geç çağrıldığı veya hiç çağrılmadığı bir sorun düzeltildi. Uli Bubenheimer | bubenheimer@users.noreply.github.com sayesinde (b/154040286)

Sürüm 2.4.0-alpha01

21 Nisan 2021

androidx.room:room-*:2.4.0-alpha01 yayınlandı. 2.4.0-alpha01 sürümü bu kayıtları içerir.

Yeni Özellikler

  • Otomatik Taşıma İşlemleri: Oda artık, şemalar dışa aktarıldığı sürece taşıma işlemlerinin otomatik olarak oluşturulması için bir API sunmaktadır. Room'a otomatik taşıma oluşturması gerektiğini bildirmek için iki sürüm arasında otomatik olarak taşınacak sürümleri bildirmek üzere @Database#autoMigrations adlı yeni bir özelliği kullanabilirsiniz. Room; tablo ve sütun yeniden adlandırma veya silme işlemleriyle 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 dokümanlarına göz atın.

Hata Düzeltmeleri

  • Ekstra parantez içeren defaultValue öğesinin, Room'un şema doğrulaması tarafından yanlış doğrulanması sorunu giderildi. 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 kayıtları içerir.

2.2.0'dan sonraki önemli değişiklikler

  • Yerleşik Enum Desteği: Odada artık varsayılan olarak bir Enum to String ve bir Enum türü dönüştürücüsü sağlanmaması durumunda varsayılan olarak kullanılacak. Bir numaralandırma için tür dönüştürücü zaten varsa Room, varsayılan değere göre bunu kullanmaya öncelik verir.
  • Sorgu Geri Çağırması: Oda, sorgular yürütülmek üzereyken artık genel bir RoomDatabase API geri çağırma işlevi sunar.Bu, hata ayıklama derlemelerine giriş yapmak için yararlı olabilir. Geri arama, RoomDatabase.Builder#setQueryCallback() aracılığıyla ayarlanabilir.
  • Pre-packaged Improvement: Odada artık giriş akışından okunan, önceden paketlenmiş bir veritabanı kullanarak veritabanı oluşturmak için kullanılan API'ler var. Bu, önceden paket veritabanının gzip'lenmesi gibi durumlara izin verir.
  • Sağlanan Tür Dönüştürücüler: Odada, uygulamanın başlatmayı kontrol edebilmesi için tür dönüştürücü örnekleri sağlamak üzere API'ler artık mevcuttur. 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: Oda artık RxJava3 türlerini destekliyor. RxJava2'ye benzer şekilde, dönüş türü Akan, Tek, Belki ve Uyumlu olan DAO yöntemleri bildirebilirsiniz. Buna ek olarak, 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öndürme 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ı. 2.3.0-rc01 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

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

Sürüm 2.3.0-beta03

10 Mart 2021

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

Yeni Özellikler

Hata Düzeltmeleri

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

Harici Katkı

  • Odaya @SkipQueryVerification ile ek açıklama eklenmişse @Query ek açıklamalı bir DAO yönteminde Oda'nın bir POJO dönüş türünü kabul etmesine izin verin. Oda, @RawQuery ek açıklamalı bir 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. Katkıda bulunan "Markus Riegel | hey@marcorei.com". (I45acb)

Sürüm 2.3.0-beta02

18 Şubat 2021

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

Yeni Özellikler

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

    KSP, ek açıklama işlemcilerini Kotlin derleyicisinde yerel olarak çalıştırmak için KAPT'nin yerine geçer ve 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ısaltma özelliği yalnızca KAPT kullanan başka işlemcilerin olmaması durumunda geçerlidir. Bilinen sorunlar için b/160322705 adresine göz atın.

Sürüm 2.3.0-beta01

27 Ocak 2021

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

Yeni Özellikler

  • Otomatik Kapatılabilir Veritabanları: Oda artık belirli bir süre sonra erişilmeyen veritabanlarını kapatma olanağına sahiptir. Bu deneysel bir özelliktir ve RoomDatabase.Builder#setAutoCloseTimeout() araması yapılarak 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 stratejiyi etkin bir şekilde yoksayarak bu 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 kayıtları içerir.

Yeni Özellikler

  • Room, sorgular yürütülmek üzereyken hata ayıklama derlemelerine giriş için yararlı olabilecek genel bir geri çağırma API'si RoomDatabase.QueryCallback sunar. Geri arama, RoomDatabase.Builder#setQueryCallback() aracılığıyla ayarlanabilir. (Iaa513, b/174478034, b/74877608)
  • Oda artık varsayılan olarak bir Enum'dan String'e ve bir Enum'dan Dizeye dönüştürme türünden tersi kullanılacak şekilde ayarlanacak. Bir numaralandırma için tür dönüştürücü zaten varsa Room, varsayılan değere göre bunu kullanmaya öncelik verir. (b/73132006)

Bilinen Sorun

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

Hata Düzeltmeleri

  • Room'un 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" sorununu düzelttiğiniz için teşekkür ederiz! (b/170141113)
  • Bir Kotlin @Dao, JVM'de genel öğeleri temel öğeler olan bir temel sınıfa sahip olduğunda Room'un yanlış kod oluşturmasına neden olan sorun düzeltildi. (b/160258066)

Harici Katkı

  • WAL modu etkinleştirilmişse ve API 16 veya daha büyükse oda artık varsayılan olarak beginTransactionNonExclusive kullanacak. Saygılarımla ‘Ahmed 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 kayıtları içerir.

Yeni Özellikler

  • Room artık tür dönüştürücü örnekleri sağlamak için API'lere sahip. Böylece uygulama, başlatma işlemlerini kontrol edebilir. Odaya 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"a teşekkürler. (Ie4fa5, b/121067210)

  • Odada artık giriş akışından okunan, önceden paketlenmiş bir veritabanı kullanarak veritabanı oluşturmak için kullanılan API'ler var. Bu, önceden paket veritabanının gzip'lenmesi gibi durumlara izin verir. "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 ve @Entity ek açıklaması dışında kullanımını önledi. (Iced1e)

  • RoomDatabase.java tablosundaki mCallbacks alanı artık gizleniyor. (d576cb, b/76109329)

Hata Düzeltmeleri

  • TypeConverters'ın yalnızca sütunları / alanları dönüştürmek ve satırları dönüştürmek için kullanılamayacağını netleştirmek üzere 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 dizilerini netleştirmek için gözlemci yöntemleri ekleme/kaldırma belgelerini güncelleyin (Ifd1d9, b/153948821)

  • Room ile ilgili, satır kimliği sütununu bildiren FTS tablolarının yanlış bir şekilde doğrulanması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 sorun yaşamamak için RoomDatabase içindeki ConcurrentHashMap öğesini Collections.synchronizedMap() ile değiştirin (d1cfc7, b/162431855)

  • Önceden paketlenmiş bir veritabanının kopyalanması için bir onOpenPrepackagedDatabase geri çağırması ekleyin. (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 kayıtları 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öntemleri bildirebilirsiniz. Buna ek olarak, RxJava3'ü desteklemek için yeni bir androidx.room:room-rxjava3 yapısı kullanıma sunulmuştur. (b/152427884)

API Değişiklikleri

  • Kotlin Nesnesi 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ı. 2.3.0-alpha01 sürümü bu kayıtları içerir.

Yeni Özellikler

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

    @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 yeniden yazmasını sağlayan ve sonuçtaki kullanılmayan sütunları kaldıracak yeni bir kullanışlı ek açıklamadır.
  • room.expandProjection işlemci seçeneğinin desteği sonlandırıldı. Yıldız projeksiyonlu Oda optimizasyonu sorgularının yerine @RewriteQueriesToDropUnusedColumns kullanın. @RewriteQueriesToDropUnusedColumns değerinin, @Embedded alanlarını içeren döndürme türleri için sunulan room.expandProjection sütun çakışması çözümünün yerine geçmediğini unutmayın.

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ılayamamasına neden olan hata düzeltildi. Blaz Solar (me@blaz.solar) sayesinde (b/155215201)
  • Room, artık ANTLR 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ş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ı. Sürüm 2.2.6 bu kayıtları içerir.

Hata Düzeltmeleri

  • Room'un 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ı. Sürüm 2.2.5 bu kayıtları içerir.

Hata Düzeltmeleri

  • MultiInstanceInvalidationService DirectBootAware yapın. "Mygod contact-git@mygod.be" adlı kullanıcıya (b/148240967) teşekkür ederiz
  • Çok örnekli geçersiz kılma 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 derleyicinin paralel derlemeler nedeniyle kilitlenmesine neden olan bir sorun giderildi. (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ı. 2.2.4 sürümü bu kayıtları içerir.

Hata Düzeltmeleri

  • İşlem başlamadan önce eş zamanlı iptal hemen iptal edilirse işlemlerin kilitlenmesine neden olan işlemlerin askıya alınmasıyla ilgili sorun giderildi. (b/148181325)
  • JDK 9 ile derleme yaparken @Generated'nin yanlış kullanılmasıyla ilgili bir sorun giderildi. (b/146538330)
  • Kotlin'deki bir DAO arayüzünün somut bir işlevi 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 yayınlandı. Sürüm 2.2.3 bu kayıtları içerir.

Hata düzeltmeleri

  • Room'un herhangi bir taşıma işlemi gerçekleştirmemiş ve şemasında dizinler içeren eski bir karma içeren bir 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 yayınlandı. Sürüm 2.2.2 bu kayıtları içerir.

Hata düzeltmeleri

  • 999'dan fazla satır içeren bire bir ilişki toplamanın, Room'un 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 kayıtları içerir.

Hata düzeltmeleri

  • Room'un derleyici seçeneği AÇIK olduğundaCURSOR_MISMATCH hakkında yanlış bir şekilde expandProjection uyarısı vermesine neden olan hata düzeltildi. (b/140759491)
  • Derleme süresinde sorguları doğrulamak amacıyla kullanılan eksik yerel kitaplığın işlenmesi için 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ı. Sürüm 2.2.0 bu kayıtları içerir.

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

  • Önceden Paketlenmiş Veritabanı: Önceden doldurulmuş bir veritabanı dosyası verildiğinde, bir RoomDatabase oluşturmak için RoomDatabase.Builder uygulamasında iki yeni API kullanılabilir. createFromAsset(), önceden doldurulmuş veritabanı dosyasının APK'nın öğeler klasöründe olması içindir. createFromFile() ise dosyanın rastgele bir konumda bulunduğu durumlar içindir. Bu API'lerin kullanımı, yıkıcı taşıma işlemlerinin davranışını değiştirir. Böyle bir durumda, Room yedek taşıma sırasında önceden doldurulmuş veritabanını varsa yeniden kopyalamaya çalışır. Aksi takdirde, tüm tabloları kaldırıp yeniden oluşturmaya yedeklenir. 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, veritabanı şemasının parçasıdır ve taşımalar sırasında doğrulanırsa doğrulanır. b/64088772
  • Çoktan Çok İlişkiler: @Relation artık yeni bir @Junction ek açıklamasını alan associateBy özelliğine sahip. Bu özellik, bir bağlantı tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gereken ilişkiyi tanımlamak için kullanılır. b/69201917
  • Bire Bir İlişkiler: Ek açıklaması @Relation olan POJO alanlarındaki List veya Set türünde olmayla ilgili kısıtlama kaldırıldı. Bu sayede tek değerli ilişkilerin temsil edilebilirliği sağlandı. b/62905145
  • Target Entity: @Insert, @Update ve @Delete DAO ek açıklamalarının artık yeni bir targetEntity özelliği vardır. Bu özellik, DAO yönteminin üzerinde işlem yapması gereken hedef tabloyu belirtmeye olanak tanır. Böylece bu DAO yöntemlerinin parametreleri, kısmi varlıklar olarak yorumlanacak rastgele POJO'lar olabilir. Pratikte bu; kısmi ekleme, silme ve güncelleme işlemlerine izin verir. b/127549506
  • Coroutines Akışı: @Query DAO yöntemleri artık Flow<T> döndürme türünde olabilir. Sorgudaki gözlemlenen tablolar geçersiz kılınırsa döndürülen Akış, yeni bir değer grubunu yeniden yayar. Channel<T> dönüş türüne sahip bir DAO işlevi bildirmek hatadır. Room bunun yerine Flow kullanmanızı ve ardından, Flow öğesini Channel'ye dönüştürmek için komşu işlevleri kullanmanızı önerir. b/130428884
  • Gradle Artımlı Ek Açıklama İşlemcisi: Oda artık bir Gradle yalıtım 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 Oda Derleyici Seçenekleri'ne bakın. Herhangi bir sorunla karşılaşırsanız lütfen buradan bir hata bildiriminde bulunun. Artımlılığı gelecekte kullanıma sunulacak kararlı bir sürümde varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217
  • Genişleyen Projeksiyonlar: Room'un bir sorguyu yıldız projeksiyonuyla yeniden yazarak yalnızca POJO döndürme türündeki sütunları içermesini sağlayan yeni bir deneysel derleyici seçeneği room.expandProjection eklendi. Örneğin, yalnızca iki alan içeren SongIdAndTitle adlı bir POJO döndüren, @Query("SELECT * FROM Song") içeren bir DAO yöntemi için. Daha sonra Room, döndürülen türü karşılayacak minimum sütun kümesi getirilecek şekilde sorguyu SELECT id, title FROM Song olarak yeniden yazar. Bu sayede sorgu, döndürülen POJO türündeki hiçbir alanla eşleşmeyen ekstra sütunlar döndürdüğünde gösterilen CURSOR_MISMATCH uyarısını ortadan kaldırır.

Sürüm 2.2.0-rc01

5 Eylül 2019

androidx.room:room:2.2.0-rc01 yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.

2.2.0-beta01 adlı Odadan bu yana herkese açık bir değişiklik yapılmadı.

Sürüm 2.2.0-beta01

22 Ağustos 2019

androidx.room:room-*:2.2.0-beta01 yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.

Hata düzeltmeleri

  • Coroutine Flow sorgusunun belirli bir süre sonra yeni değerler göndermeyi durdurmasına neden olan hata düzeltildi. (b/139175786)
  • Room 1.0'dan bu yana taşıma işlemine geçmemiş bir veritabanı açılırken, Room'un eski şema karma kodunu kabul etmemesine ve geçersiz şema nedeniyle çalışma zamanı kilitlenmesine neden olmasına 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 kaydetmeleri burada bulabilirsiniz.

Yeni Özellikler

  • Coroutines Akışı: @Query DAO yöntemleri artık Flow<T> döndürme türünde olabilir. Sorgudaki gözlemlenen tablolar geçersiz kılınırsa döndürülen Akış, yeni bir değer grubunu yeniden yayar. Channel<T> dönüş türüne sahip bir DAO işlevi bildirmek hatadır. Room bunun yerine Flow kullanmanızı ve ardından, Flow öğesini Channel'ye dönüştürmek için komşu işlevleri kullanmanızı önerir. b/130428884
  • Genişleyen Projeksiyonlar: Room'un bir sorguyu yıldız projeksiyonuyla yeniden yazarak yalnızca POJO döndürme türündeki sütunları içermesini sağlayan yeni bir deneysel derleyici seçeneği room.expandProjection eklendi. Örneğin, yalnızca iki alan içeren SongIdAndTitle adlı bir POJO döndüren, @Query("SELECT * FROM Song") içeren bir DAO yöntemi için. Daha sonra Room, döndürülen türü karşılayacak minimum sütun kümesi getirilecek şekilde sorguyu SELECT id, title FROM Song olarak yeniden yazar. Bu sayede sorgu, döndürülen POJO türündeki hiçbir alanla eşleşmeyen ekstra sütunlar döndürdüğünde gösterilen CURSOR_MISMATCH uyarısını ortadan kaldırır.
  • onDestructiveMigrate, Room'un bir veritabanını yıkıcı şekilde taşıması için RoomDatabase.Callback öğesine eklenen yeni bir geri çağırma API'sidir. b/79962330

Hata Düzeltmeleri

  • Room'un, alan korunduğunda alan belirleyici olarak bir yöntem kullanarak yanlış kod oluşturmasına neden olan hata düzeltildi. b/136194628
  • Çok örnekli geçersiz kılma etkinleştirildiğinde ve geçersiz kılma Hizmeti sonlandırıldığında InvalidationTracker'ın ikinci bir işlemde NPE bildirmesine neden olan bir hata düzeltildi. b/137454915
  • Room'un, @RawQuery ile ek açıklama olarak eklenen devralınan bir askıya alma işlevinin döndürme türünü doğru şekilde tanımlamamasına neden olan hata düzeltildi. b/137878827
  • İlgili anahtar BLOB türünde olduğunda @Relation için oluşturulan kod, benzer bir ByteBuffer kullanacak şekilde güncellendi. b/137881998
  • Room'un @Insert, @Update ve @Delete öğelerinin kısmi varlık parametreleri olarak kullanılan POJO'lardaki eksik belirleyiciler hakkında şikayette bulunmasına 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 eksik alıcı ve belirleyiciler hakkında şikayette bulunmasına 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ürememesine neden olan hata düzeltildi. Bu hata, yeniden kullanılan parametrelerle bir sorgu yürütülürken çalışma zamanı istisnasına neden oluyor. b/137254857

Sürüm 2.2.0-alpha01

10 Temmuz 2019

Yeni Özellikler

  • Önceden Paketlenmiş Veritabanı: Önceden doldurulmuş bir veritabanı dosyası verildiğinde, bir RoomDatabase oluşturmak için RoomDatabase.Builder uygulamasında iki yeni API kullanılabilir. createFromAsset(), önceden doldurulmuş veritabanı dosyasının APK'nın öğeler klasöründe olması içindir. createFromFile() ise dosyanın rastgele bir konumda bulunduğu durumlar içindir. Bu API'lerin kullanımı, yıkıcı taşıma işlemlerinin davranışını değiştirir. Böyle bir durumda, Room yedek taşıma sırasında önceden doldurulmuş veritabanını varsa yeniden kopyalamaya çalışır. Aksi takdirde, tüm tabloları kaldırıp yeniden oluşturmaya yedeklenir. 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, veritabanı şemasının parçasıdır ve taşımalar sırasında doğrulanırsa 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 zaten varsa ve aynı sütunlara @ColumnInfo aracılığıyla varsayılan değerler tanımlamaya karar verirseniz hesaplanmayan varsayılan değerleri doğrulamak için taşıma işlemi sağlamanız gerekebilir. Daha fazla bilgi için Oda Taşıma İşlemleri bölümüne bakın.

  • Çoktan Çok İlişkiler: @Relation artık yeni bir @Junction ek açıklamasını alan associateBy özelliğine sahip. Bu özellik, bir bağlantı tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gereken ilişkiyi tanımlamak için kullanılır. b/69201917
  • Bire Bir İlişkiler: Ek açıklaması @Relation olan POJO alanlarındaki List veya Set türünde olmayla ilgili kısıtlama kaldırıldı. Bu sayede tek değerli ilişkilerin temsil edilebilirliği sağlandı. b/62905145
  • Target Entity: @Insert, @Update ve @Delete DAO ek açıklamalarının artık yeni bir targetEntity özelliği vardır. Bu özellik, DAO yönteminin üzerinde işlem yapması gereken hedef tabloyu belirtmeye olanak tanır. Böylece bu DAO yöntemlerinin parametreleri, kısmi varlıklar olarak yorumlanacak rastgele POJO'lar olabilir. Pratikte bu; kısmi ekleme, silme ve güncelleme işlemlerine izin verir. b/127549506
  • Gradle Artımlı Ek Açıklama İşlemcisi: Oda artık bir Gradle yalıtım 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 Oda Derleyici Seçenekleri'ne bakın. Herhangi bir sorunla karşılaşırsanız lütfen buradan bir hata bildiriminde bulunun. Artımlılığı gelecekte kullanıma sunulacak kararlı bir sürümde varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217

Hata Düzeltmeleri

  • Oda, sorgu tamamlanmadan önce sorgunun Rx akışı atıldığında EmptySetResultException öğesini artık genel hata işleyiciye yaymaz. b/130257475
  • @RawQuery ile açıklama eklenmiş bir askıya alma DAO işlevinin döndürme türü olmadığında Room'un yanlış hata mesajı göstermesine neden olan hata düzeltildi. 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

Oda 2.1.0, 2.1.0-rc01 tarihinden itibaren herhangi bir değişiklik olmadan yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.

2.0.0'dan sonraki önemli değişiklikler

  • FTS: Oda artık FTS3 veya FTS4 eşleme tablosuna sahip varlıkları destekliyor. @Entity ile ek açıklama eklenen sınıflara artık tam metin eşleme tablosu olan bir sınıf bildirmek için @Fts3 veya @Fts4 ile ek açıklama eklenebilir. Daha fazla özelleştirme için FTS seçeneklerine ek açıklamanın yöntemleri aracılığıyla erişebilirsiniz.
  • Görünümler: Oda artık @DatabaseView ek açıklaması kullanılarak bir sınıfın görünüm olarak da bilinen kayıtlı sorgu olarak beyan edilmesini destekliyor.
  • Couroutine'ler: DAO yöntemleri artık askıya alma işlevleri olabilir. Bu işlevden yararlanmak için bağımlılıklarınıza room-ktx ekleyin. ktx yapısı, bir eş yordam içinde veritabanı işlemleri gerçekleştirmek için RoomDatabase.withTransaction uzantı işlevini de sağlar.
  • Otomatik Değer: Oda artık AutoValue ek açıklamalı sınıflarının varlık ve POJO olarak beyan edilmesini destekliyor. @PrimaryKey, @ColumnInfo, @Embedded ve @Relation oda ek açıklamaları artık otomatik değer ek açıklamalı sınıfın soyut yöntemlerinde bildirilebilir. Room'un düzgün şekilde anlayabilmesi için bu ek açıklamalara @CopyAnnotations eşlik etmesi gerektiğini de unutmayın.
  • Ek Eş Zamansız Desteği: @Insert, @Delete veya @Update ek açıklamasına sahip DAO yöntemlerinin yanı sıra INSERT, DELETE veya UPDATE ifadelerini içeren @Query yöntemleri artık Rx döndürme türlerini Completable, Single, Maybe ile Guava'nın dönüş türü ListenableFuture'yi desteklemektedir ve askıya alma işlevleri de olabilir.
  • enableMultiInstanceInvalidation, aynı veritabanı dosyasını kullanarak RoomDatabase'in birden fazla örneğinde geçersiz kılmayı etkinleştirmek için RoomDatabase.Builder alanında yeni bir API'dir.
  • fallbackToDestructiveMigrationOnDowngrade, eski sürüme geçiş yapılması durumunda veritabanını otomatik olarak yeniden oluşturan RoomDatabase.Builder alanında yeni bir API'dir.
  • ignoredColumns, @Entity ek açıklaması içinde bulunan ve yoksayılan alanları ada göre listelemek için kullanılabilecek yeni bir API'dir.
  • Room artık veri sınıflarında Kotlin’in birincil oluşturucusunu düzgün şekilde kullanır ve mülkleri vars olarak tanımlama ihtiyacını ortadan kaldırır.

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 Oda başlatma hatası düzeltildi. 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
  • Birbirine paralel olarak birden fazla geçersiz kılma denetimi gerçekleştiğinde InvalidationTracker'ın kilitlenmeye neden olmasına neden olan 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 arasında değişiklik yapılmadan yayınlandı. Bu sürümdeki kaydetmeleri burada bulabilirsiniz.

Sürüm 2.1.0-alpha07

25 Nisan 2019

API / Davranış Değişiklikleri

  • RoomDatabase.withTransaction uzantı işlevi, alıcı olarak CoroutineScope olan bir fonksiyon bloğunu artık almayacak şekilde değiştirildi. Bu, işlem bloğundaki öğeleri eşzamanlı olarak çalıştırmak için gereken ek coroutineScope { } sarmalayıcının atlanmasını engeller.

Hata Düzeltmeleri

  • Koleksiyon türü parametresi içeren bir Kotlin DAO işlevi için Room'un TypeConverter ile eşleşmemesine neden olan hata düzeltildi. 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 serileştirilir, böylece Room veritabanı işlemlerini yürütmek için birden fazla iş parçacığı kullanmayacaktır. Yürütücünün işlemlerde kullanılacak şekilde yapılandırılmasına olanak tanımak için RoomDatabase.Builder.setTransactionExecutor(Executor) eklendi.
  • RoomDatabase.runInTransaction(Callable), işaretli istisnaları artık RuntimeExceptions konumuna kaydırmaz. b/128623748

Hata Düzeltmeleri

  • Hem içerik tablosu hem de harici içerik FTS tablosunun gözlemcileri eklendiğinde geçersiz kılma izleyicinin içerik tablosunu gözlemlemeyi bırakmasına neden olan hata düzeltildi. b/128508917
  • Room'un SQLite dil bilgisi, SQLite 3.24.0'la 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, bir eş yordam içinde veritabanı işlemlerini güvenli bir şekilde gerçekleştirmenize olanak tanır. Oda uzantısı işlevleri ve eş yordam desteğiyle birlikte room-ktx yapısında mevcuttur.
  • @Transaction ile ek açıklamalı, 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ı adlandırma uygulanarak room-ktx olarak yeniden adlandırıldı.
  • RoomDatabase için beginTransaction, setTransactionSuccessful ve endTransaction kullanımdan kaldırılmış, bunların yerine runInTransaction ve room-ktx uzantı işlevi (withTransaction) kullanıma sunulmuştur.

Hata Düzeltmeleri

  • Kullanılan jeton ayırıcı basit olduğunda jeton oluşturucu bağımsız değişkenlerinin çıkarı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ımlamamasına neden olan hata düzeltildi. b/123767877
  • INSERT, UPDATE veya DELETE ifadeleri içeren ertelenmiş @Query DAO yönteminin ana iş parçacığında sorguyu istekle 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
  • Kullanımdan kaldırılmış yöntem kullanımının, oluşturulan kodda doğru şekilde engellenmemesine neden olan bir hata düzeltildi. b/117602586
  • androidx.sqlite'ın Room bağımlılığı, bozuk veritabanlarının doğru şekilde işlenmesine yönelik düzeltmeler içeren 1.0.2 olarak güncellendi. b/124476912

Bilinen Sorunlar

  • Oda 2.1.0-alpha05, şu anda Maven Central'da (KT-27991) kullanılamayan 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/" } eklenerek giderilebilir.

Sürüm 2.1.0-alpha04

25 Ocak 2019

Yeni Özellikler

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

API / Davranış Değişiklikleri

  • @Transaction ek açıklamasına sahip, soyut olmayan bir DAO yöntemi Single, Mayble, Completable, LiveData veya ListenableFuture gibi eşzamansız bir tür döndürürse oda hata verir. İşlemler iş parçacığı şeklinde sınırlı olduğundan, Oda'nın farklı iş parçacıklarında sorgularla işlem yapabilen 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 amaçlandığı gibi çalışmadığından @Deprecated oldu. b/117266738

Hata Düzeltmeleri

  • DAO yöntemi bir askıya alma işlevi olduğunda Room'un döndürme türündeki TypeConverter'ı doğru şekilde kullanmamasına neden olan hata düzeltildi. b/122988159
  • Room'un devralınan askıya alma işlevlerinin yanlışlıkla askıya alınma olmayan olarak tanımlanmasına neden olan hata düzeltildi. b/122902595
  • Bir @Embedded alanı üst sınıftayken ve birden fazla alt sınıfta kullanıldığında Room'un 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 belirteçleştiricilerin 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

  • Couroutine'ler: DAO yöntemleri artık askıya alma işlevleri olabilir. Odada askıya alma işlevlerini desteklemek için yeni bir yapı yayınlandı, room-coroutines. b/69474692
  • @Insert, @Delete veya @Update ek açıklamasına sahip DAO yöntemleri artık döndürme türü olarak ListenableFuture değerini destekliyor. b/119418331

Hata Düzeltmeleri

  • Room'un, @Entity öğesinin ignoredColumns özelliğindeki sütunlara sahip bir oluşturucuyu yanlışlıkla bulmaya çalışmasına neden olan hata düzeltildi. b/119830714
  • Room'un, oluşturulan uygulamada DAO yöntem parametrelerini nihai olarak işaretlememesine neden olan hata düzeltildi. b/118015483
  • Özel simgeler içeren bir sorguda hata bildirilirken Room'un işlemcisinin kilitlenmesine neden olan hata düzeltildi. b/119520136
  • Room'un 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özlemlendikten sonra çöp toplamasına neden olan ve artık yeni veri yayınlamamasına yol açan hata düzeltildi. b/74477406
  • Kilit anlaşmazlığını azaltmak için RoomDatabase uygulamasının kapatma kilidi güncellendi. b/117900450

Sürüm 2.1.0-alpha02

30 Ekim 2018

Yeni Özellikler

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

Hata Düzeltmeleri

  • Bir Rx döndürme türü abone olurken ve öğe imha ederken Room'un ana iş parçacığında disk G/Ç işlemi 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
  • Bağımsız değişken içermeyen bir Kotlin varsayılan yöntemi içeren DAO arayüzü uygulaması için Room'un yanlış kod oluşturmasına neden olan hata düzeltildi. b/117527454
  • Room'un SQLite dil bilgisi ayrıştırıcısı güncellendi ve uzun derleme sürelerine neden olan 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 öğeleri destekliyor. @Entity ile ek açıklamalı sınıflara, tam metin eşleme tablosu olan bir sınıf bildirmek için artık @Fts3 veya @Fts4 ile ek açıklama eklenebilir. Daha fazla özelleştirme için FTS seçeneklerini ek açıklamanın yöntemleriyle kullanabilirsiniz. b/62356416
  • Görünümler: Oda artık bir sınıfın @DatabaseView ek açıklaması kullanılarak görünüm olarak da bilinen kayıtlı sorgu olarak beyan edilmesini destekliyor. b/67033276
  • Otomatik Değer: Oda artık AutoValue ek açıklamalı sınıflarını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çıklamalı sınıfın soyut yöntemlerinde bildirilebilir. Room'un düzgün şekilde anlaması için bu ek açıklamalara @CopyAnnotations eşlik etmesi gerektiğini unutmayın. b/62408420
  • Ek Rx Dönüş Türleri Desteği: @Insert, @Delete veya @Update ek açıklamasına sahip DAO yöntemleri artık Rx dönüş türlerini Completable, Single<T> ve Maybe<T> desteklemektedir. b/63317956
  • @Relation ile Sabit Türler: Oda, önceden @Relation ek açıklamalı alanın ayarlanabilir olmasını gerektiriyordu ancak artık yapıcı parametreler olabilir.
  • enableMultiInstanceInvalidation: RoomDatabase.Builder ürününde, aynı veritabanı dosyasını kullanarak RoomDatabase'in birden fazla örneğinde geçersiz kılmayı etkinleştiren yeni bir API'dir. Bu çok örnekli geçersiz kılma mekanizması, birden çok işlemde de çalışır. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: Eski sürüme geçiş yapıldığında veritabanını otomatik olarak yeniden oluşturacak, RoomDatabase.Builder alanındaki 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

  • RoomDatabase kapsamındaki mCallback ve mDatabase adlı kullanıcılar artık @Deprecated durumda ve Odanın 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 düzgün şekilde kurtarılamamasına veya başlatma sırasında hatalı bir taşıma işleminin gerçekleştirilemediği iki sorun düzeltildi. b/111504749 ve b/111519144
  • Room artık veri sınıflarında Kotlin’in birincil oluşturucusunu düzgün bir şekilde kullanacak ve alanların vars olarak belirtilmesine gerek kalmayacaktır. 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ünden 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ünden herhangi bir değişiklik yapılmadan yayınlanmıştır.

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ı bulunamadı" hatasında sınıf/alan adını belirtin b/73334503
  • b/110197391 numaralı Odanın eski sürümleriyle RoomOpenHelper geriye dönük uyumluluk sorunu giderildi

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 Taşıma işlemlerini kullanıyorsanız 1.1.0 yerine 1.1.1-rc1 Odasını kullanmanızı önemle tavsiye ederiz.

Room'un 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

  • Bir Kotlin POJO'su, Java b/78199923'te tanımlanan bir ilişki varlığına referans verdiğinde derleme hatasını düzeltme

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üren ve döndürülen Single veya Maybe verilerine 1'den fazla gözlemci eklerseniz sorunlara neden olan kritik bir hata düzeltildi. b/76031240

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

Sürüm 1.1.0-beta1

21 Mart 2018

API Değişiklikleri

  • API İncelemesi geri bildirimine göre @RawQuery, artık sorgu parametresi olarak String geçirilmesini kabul etmemektedir. [SupportSQLiteQuery][ref-SupportSQLiteQuery] kullanmanız gerekiyor. (Bağımsız değişken desteğiyle [SupportSQLiteQuery][ref-SupportSQLiteQuery] örneğini kolayca oluşturmak için [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] bölümüne bakın).
  • RoomDatabase.Builder'ın [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] yöntemi artık vararg Integer yerine vararg int kabul etmektedir.

Hata Düzeltmeleri

  • [RoomDatabase.clearAllTables][ref-clearAllTables] artık bir WAL kontrol noktası ayarlayıp veritabanını VACUUM ayarlayarak işletim sistemine alan geri döndürmeye çalışıyor.
  • [@RawQuery][ref-RawQuery] artık observedEntities mülkü için herhangi bir Pojo'yu kabul ediyor. Bunun için Pojo, Embedded alanları veya Relation'leri aracılığıyla bir veya daha fazla varlığa referans veriyor. b/74041772
  • Sayfalandırma: Room'un DataSource uygulaması artık çoklu tablo bağımlılıklarını (ilişkiler ve birleştirmeler gibi) doğru şekilde işliyor. Daha önce bunlar yeni sonuçları tetikleyemiyor veya derleyemiyordu. b/74128314

Sürüm 1.1.0-alpha1

22 Ocak 2018

Yeni Özellikler

  • RawQuery: Bu yeni API @Dao yöntemlerinin SQL'i b/62103290, b/71458963 sorgu parametresi olarak almasını sağlar.
  • fallBackToDestructiveMigrationsFrom: RoomDatabase.Builder'daki bu yeni API, başlangıç şeması sürümlerinde yıkıcı taşıma işlemlerine izin verileceği yerler üzerinde daha ayrıntılı kontrol sağlar (fallbackToDestructiveMigration ile karşılaştırıldığında) b/64989640
  • Room artık yalnızca yeni Paging API'lerini (alfa-4+) destekliyor ve kullanımdan kaldırılan LivePagedListProvider için destek bırakılıyor. Yeni Oda alfa sürümünü kullanmak için alpha-4 veya daha yüksek bir sayfa sürümü kullanmanız ve henüz yapmadıysanız LivePagedListProvider konumundan LivePagedListBuilder öğesine geçmeniz gerekir.

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