Room

Room kalıcılık kitaplığı, SQLite'in tüm gücünden yararlanırken daha sağlam veritabanı erişimi sağlamak için SQLite üzerinde bir soyutlama katmanı sağlar.
Son Güncelleme Kararlı Sürüm Sürüm Adayı Beta Sürümü Alfa Sürümü
30 Ekim 2024 2.6.1 - - 2.7.0-alpha11

Bağımlılıkları beyan etme

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

Oda 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ün build.gradle dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin:

Kotlin

dependencies {
    val room_version = "2.6.1"

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

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

    // If this project only uses Java source, use the Java annotationProcessor
    // No additional plugins are necessary
    annotationProcessor("androidx.room:room-compiler:$room_version")

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

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

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

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

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

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

Groovy

dependencies {
    def room_version = "2.6.1"

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

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

    // If this project only uses Java source, use the Java annotationProcessor
    // No additional plugins are necessary
    annotationProcessor "androidx.room:room-compiler:$room_version"

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

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

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

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

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

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

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

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 başlıklı makaleyi inceleyin.

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

Derleyici Seçeneklerini Yapılandırma

Oda için aşağıdaki ek açıklama işleyici seçenekleri vardır.

room.schemaLocation directory
Veritabanı şemalarının, belirtilen dizindeki JSON dosyalarına aktarılmasını sağlar. Daha fazla bilgi için Oda taşıma işlemleri başlıklı makaleyi inceleyin.
room.incremental boolean
Gradle artımlı ek açıklama işleyicisini etkinleştirir. Varsayılan değer true'tür.
room.generateKotlin boolean
Java yerine Kotlin kaynak dosyaları oluşturun. KSP gerekir. Varsayılan değer false'tür. Daha fazla bilgi için 2.6.0 sürümü notlarına bakın.

Room Gradle eklentisini kullanma

Room 2.6.0 ve sonraki sürümlerde, Room derleyicisinin seçeneklerini yapılandırmak için Room Gradle eklentisini kullanabilirsiniz. Bu eklenti, oluşturulan şemaların (derleme görevlerinin bir çıktısı olan ve otomatik taşıma işlemleri için kullanılan) yeniden üretilebilir ve önbelleğe alınabilir derlemelere sahip olacak şekilde doğru şekilde yapılandırılacak şekilde projeyi yapılandırır.

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

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ından yararlanın.

Groovy

plugins {
    id 'androidx.room'
}

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

Kotlin

plugins {
    id("androidx.room")
}

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

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

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

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

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

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

Groovy

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

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

Kotlin

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

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

room.schemaLocation, temel bir tür değil de bir dizin olduğundan, bu seçenek eklenirken Gradle'ın güncel kontroller yaparken bu dizinden haberdar olması için CommandLineArgumentsProvider kullanılması gerekir. Oda veritabanınızı taşıma bölümünde, şema konumunu sağlayan eksiksiz bir CommandLineArgumentsProvider uygulaması gösterilir.

Geri bildirim

Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmek için fikirleriniz varsa lütfen bize bildirin. Yeni bir kitaplık oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oy ekleyebilirsiniz.

Yeni sayı oluştur

Daha fazla bilgi için Sorun İzleyici belgelerine bakın.

Sürüm 2.7

Sürüm 2.7.0-alpha11

30 Ekim 2024

androidx.room:room-*:2.7.0-alpha11 yayınlanır. 2.7.0-alpha11 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Yeni eklenen convertRows() yöntem imzasını tekrar kullanarak oda sayfaları için RawRoomQuery alan bir askıya alma işlevi oluşturun. (Ie57b5, b/369136627)

Hata Düzeltmeleri

  • @Relation, PagingSource ile birlikte kullanıldığında geçersiz kod oluşturulmasına neden olan oda sayfalandırma sorunu düzeltildi.

Sürüm 2.7.0-alpha10

16 Ekim 2024

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

API Değişiklikleri

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

Sürüm 2.7.0-alpha09

2 Ekim 2024

androidx.room:room-*:2.7.0-alpha09 yayınlanır. 2.7.0-alpha09 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

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

Sürüm 2.7.0-alpha08

18 Eylül 2024

androidx.room:room-*:2.7.0-alpha08 yayınlanır. 2.7.0-alpha08 sürümü bu taahhütleri içerir.

Yeni Özellikler

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Room KMP'nin, JVM dışı platformlar için UUID kullanarak kod yayınlamaya çalışması sorunu düzeltildi. (b/362994709)
  • Room Gradle eklentisinde, Compose Multiplatform ile bir KMP projesinde kullanıldığında "Dönüşüm için kilitlendikten sonra yapılandırma özelliklerini değiştiremez" gibi bir hataya neden olan sorun düzeltildi. (b/343408758)

Sürüm 2.7.0-alpha07

21 Ağustos 2024

androidx.room:room-*:2.7.0-alpha07 yayınlanır. 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 Enstrümantasyon Testi kaynak kaynaklarına otomatik olarak ekler.

Hata Düzeltmeleri

  • RoomDatabaseConstructor işlevinin oluşturulan "actual" değerinde, "expect" beyanında da bu işlev geçersiz kılınmışsa initialize işlevinde "actual" değiştiricisinin eksik olmasıyla ilgili bir 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ınlanır. 2.7.0-alpha06 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • KMP projesinde bir RoomDatabase için örnek oluşturma ayarını değiştirin.

Kotlin 2.0 derleme modeli nedeniyle, instantiateImpl() adlı oluşturulacak bir işleve referans verme stratejisi artık geçerli değildir. instantiateImpl() stratejisinin yerini alacak iki yeni API (@ConstructedBy ve RoomDatabaseConstructor) kullanıma sunuldu. Yeni strateji şu şekildedir:

  1. RoomDatabaseConstructor uygulayan bir expect nesnesi tanımlayın

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

      @Database(...)
      @ConstructedBy(MyDatabaseCtor::class) // NEW
      abstract class MyDatabase : RoomDatabase
    
  3. Fabrika bağımsız değişkeni 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, b/338446862 ve b/342905180 ile ilgili düzeltmeler

  • Ham SQL dizesini ve bağımsız değişkenleri bir ifadeye bağlamak için kullanılan bir işlev 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 tek parametresi olarak RoomRawQuery değerini kabul edebilir. (Iea844, b/330586815)
  • CoroutineContext kabul eden bir setQueryCallback() aşırı yüklemesi ekleyin. (Id66ff, b/309996304)
  • linuxArm64 Kotlin Çok Platformlu hedefleri için destek eklendi (I139d3, b/338268719)

Hata Düzeltmeleri

  • Room'un Android dışı hedeflerde yanlışlıkla recursiveFetchArrayMap çağrısı oluşturmasına neden olan sorun düzeltildi. (710c36, b/352482325)
  • Room'un, KMP projesinde bazen "Bağlantı kurma girişimi zaman aşımına uğradı" hatası vermesine 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, SQLite olarak ve BundledSQLiteKt, 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ınlanır. 2.7.0-alpha04 sürümü bu taahhütleri 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 notu eklenmiş sınıfın paketi yoksa Room'un oluşturulan veritabanı uygulamasını bulamadığı sorun düzeltildi. (b/342097292)
  • Otomatik kapatma ve çoklu örnek geçersiz kılma özelliklerinin etkinleştirilmesinin, veritabanı boş olduğu için otomatik olarak kapatıldığında bazen ConcurrentModificationException hatasına neden olduğu sorun düzeltildi.

Sürüm 2.7.0-alpha03

29 Mayıs 2024

androidx.room:room-*:2.7.0-alpha03 yayınlanır. 2.7.0-alpha03 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Kotlin 2.0 ve KSP 2.0 ile ilgili çeşitli sorunlar düzeltildi. 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ınlanır. 2.7.0-alpha02 sürümü bu taahhütleri 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ı. 2.7.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Kotlin Çoklu Platform (KMP) Desteği: Bu sürümde Room, Kotlin Multiplatform (KMP) kitaplığı olacak şekilde yeniden düzenlendi. Yapılacak bazı çalışmalar olsa da bu sürümde, işlevlerin çoğunun "ortaklaştırıldığı" (çoklu platformlu hale getirildiği) yeni bir Room sürümü kullanıma sunulmaktadır. Şu anda desteklenen platformlar Android, iOS, JVM (masaüstü), yerel Mac ve yerel Linux'tur. Yeni desteklenen platformlarda eksik olan tüm işlevler, gelecekteki Oda sürümlerinde "özellik tamamlandı" durumuna getirilecektir.

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

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

API Değişiklikleri

  • Oluşturulan RoomDatabase uygulamasını örneklendirirken yansıma kullanılmasını önlemek için Room tarafından oluşturulan bir işlevle kullanılması amaçlanan bir lambda parametresi alan Room.databaseBuilder() aşırı yüklemesi eklendi. Örnek kullanım:
Room.databaseBuilder<MyDatabase>(
    context = appContext,
    name = dbFilePath,
    factory =  { MyDatabase::class.instantiateImpl() }
)
  • CoroutineContext içeren bir oda yapılandırmak için bir API, oluşturucuya eklendi: RoomDatabase.Builder.setQueryCoroutineContext. Bir RoomDatabase'ün yalnızca setQueryExecutor kullanan yürütücülerle veya bir Coroutine bağlamıyla yapılandırabileceğini, ancak ikisini birden kullanamayacağını unutmayın.
  • Odayı bir SQLite Sürücüsü ile yapılandırmak için API eklendi: RoomDatabase.Builder.setDriver(). SQLite Sürücü API'si hakkında daha fazla bilgi için SQLite KMP belgelerine bakın.
  • Sürücü API'lerinden temel SQLiteConnection'e erişmek için API'ler eklendi: RoomDatabase.useReaderConnection ve RoomDatabase.useWriterConnection.
  • Varios Room ile ilgili geri çağırma çağrılarının 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ınmak üzere tasarlanmıştır. Android uygulamasındaki Room kullanımlarını ortak bir KMP modülüne taşıma hakkında daha fazla bilgi için taşıma rehberine bakın. Geri aramalar:
    • Migration.migrate(SQLiteConnection)
    • AutoMigrationSpec.onPostMigrate(SQLiteConnection)
    • RoomDatabase.Callback.onCreate(SQLiteConnection)
    • RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
    • RoomDatabase.Callback.onOpen(SQLiteConnection)
  • KTX yapı androidx.room:room-ktx, tüm API'leriyle birlikte androidx.room:room-runtime ile birleştirildi. Yapı artık boş. Lütfen bu paketi 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ınlanır. 2.6.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Oluşturulan kodda, EntityCursorConverter içindeki çift sütunların varsayılan değerinin 0,0 yerine 0 olarak ayarlanması sorunu düzeltildi. Ayrıca, kayan nokta türü sütunlar için benzer bir uç durumla ilgili olası bir düzeltme de eklendi. (Id75f5, b/304584179)
  • PagingSource yüklemelerinden atılan istisnalar artık Throwable içeren LoadResult.Error LoadStateUpdate olarak dağıtılacak. Bu hata durumu PagingDataAdapter.loadStateFlow(Views) veya LazyPagingItems.loadState(Compose) ile gözlemlenebilir. Bu durumun, geçmişte yükleme hatalarının, yüklemeyi tetikleyen dao yöntemi tarafından oluşturulan bir Exception olarak gösterildiği davranış değişikliğini işaret ettiğini unutmayın. (I93887, b/302708983)

2.6.0 sürümü

18 Ekim 2023

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

2.5.0 sürümünden beri yapılan ö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'deki 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 için KSP dokümanlarına bakın.

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 mülklere izin verilmez. Bunun yerine, mülk değerinin değiştirilemez olduğu ve sabit bir depolanmış sonuca sahip olduğu yanlış fikrini önlemek için işlev olarak yeniden yazılmaları gerekir. 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'i kullanırken projelerinizin boşluk kabul etme durumu açısından daha katı olduğunu fark edebilirsiniz. Kotlin CodeGen'de tür bağımsız değişkenlerinin boşluk kabul edip etmediği önemlidir. Java'da ise bu genellikle yoksayılır. Örneğin, "Flow<foo\>" dönüş türünü kullandığınız ve tablonun boş olduğunu varsayalım. Java CodeGen'de bu durum herhangi bir soruna neden olmaz ancak Kotlin CodeGen'de hata alırsınız. Bunu önlemek için, null değerinin yayınlandığı varsayılarak "Flow<foo?\>" kullanmanız gerekir. </foo?\></foo\>

  • Room Gradle eklentisinin yeni yapıları, Room'a androidx.room kimliğiyle eklendi. Bu yapı, Room'da Gradle ek açıklama işleyicisi seçenekleri aracılığıyla şema girişleri ve çıkışları elde etmeyle ilgili mevcut çeşitli sorunları çözer. Daha fazla bilgi için Room 2.6.0-alpha02 sürüm notlarına göz atı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öndürme türleri artık Room'da destekleniyor. (I13f48, 203008711)

Sürüm 2.6.0-rc01

20 Eylül 2023

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

Sürüm 2.6.0-beta01

23 Ağustos 2023

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

Hata Düzeltmeleri

  • Bir ekleme sırasında 2067 SQLITE_CONSTRAINT_UNIQUE istisnası atıldığında karşılaşılan özel durum SQLite istisnası ele alınırken ekleme işlemi 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ınlanır. 2.6.0-alpha03 sürümü bu taahhütleri içerir.

Yeni Özellikler

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

API Değişiklikleri

  • Artık desteği sonlandırılan @MapInfo yerine @MapColumn adlı yeni bir tür ek açıklaması 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 kendisinde değil, doğrudan bir DAO işlevinin döndürülen türündeki tür bağımsız değişkeninde kullanılmasıdır. Daha fazla bilgi için lütfen @MapColumn dokümanlarına bakın. (Ib0305, b/203008711)
  • API dosyaları, uyumluluk engellemesine ek 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. Bu sayede eklenti, birden fazla dizin oluşturmadan tüm varyantlar için global bir konumu kabul edebilir. Böylece daha sorunsuz taşımalar sağlar. Ayrıca, eklentinin avantajlarını (yeniden üretilebilir ve önbelleğe alınabilir derlemeler) korurken varyantları veya derleme türü şemalarını manuel olarak yapılandıracak kadar esnektir. (I09d6f, b/278266663)

Hata Düzeltmeleri

  • QueryInterceptorStatement'teki 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ınlanır. 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 çıktısı olan oluşturulan şemaların, yeniden üretilebilir ve önbelleğe alınabilir derlemelere sahip olacak şekilde doğru şekilde yapılandırıldığı şekilde yapılandırır. Bu eklenti, temel şema konumunu yapılandırmak için bir DSL sunar:

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

Ardından eklenti, Room derleyicisini ve çeşitli derleme görevlerini ve arka uçlarını (javac, KAPT, KSP) şema dosyalarını schemas/flavorOneDebug/com.package.MyDatabase/1.json gibi özelleştirilmiş klasörlere verecek şekilde yapılandırır. Her zamanki gibi bu dosyalar, doğrulama ve otomatik taşıma işlemleri için kullanılmak üzere depoya kaydedilir. 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ıktan ve eklenti kararlı hale geldiğinde gelecekte güncellenecektir. Bu nedenle, lütfen deneyin.

API Değişiklikleri

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

Hata Düzeltmeleri

  • Room kaynaklarının Java'dan Kotlin'e taşınmasından sonra Robolectric'te veritabanı oluşturulurken 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ınlanır. 2.6.0-alpha01 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

  • KSP için Room'da değer sınıflarını destekleme. Room, artık varlıklarda değer sınıflarını destekleyebilir. (4194095)
  • Kotlin kod oluşturma(veya "Kotlin CodeGen") artık Room'da etkinleştirilebilir (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 için KSP dokümanlarına bakın.

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 mülklere izin verilmez. Bunun yerine, mülk değerinin değiştirilemez olduğu ve sabit bir depolanmış sonuca sahip olduğu yanlış fikrini önlemek için işlev olarak yeniden yazılmaları gerekir. Eklenen bir diğer kısıtlama da, Kotlin CodeGen için Room'da artık boş koleksiyon döndürme 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 tür bağımsız değişkenlerinin boşluk kabul edip etmediği önemlidir. Java'da ise bu genellikle yoksayılır. Ö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ğerinin yayınlandığı varsayılarak "Flow<foo?\>" kullanmanız gerekir. </foo?\></foo\>

API Değişiklikleri

  • DAO yöntemi dönüş türlerinde boş değer atanabilir koleksiyonların anlamsız kullanımına karşı koruma (I777dc, b/253271782, b/259426907)
  • İzleyici geçersiz kılma değişikliklerini yayınlayan 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şturma işleminde soyut mülklerin DAO alıcıları veya DAO sorguları olarak kullanılmasına izin verilmemelidir. Bunun yerine, mülk değerinin değiştirilemez ve sabit bir depolanmış sonuca sahip olduğu yanlış fikrini önlemek için işlev olarak yeniden yazılmalıdırlar. (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 bir uyumsuzluk sorunu düzeltildi. (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ınlanır. Sürüm 2.5.1 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Veritabanı zaten açıksa FrameworkSQLiteHelper dizinindeki veritabanı üst dizinini kontrol etmekten kaçının. (5de86b8)
  • Veritabanının açık olup olmadığını kontrol ederken isOpenInternal işaretini kullanın. (e91fb35)
  • Odanın acquireTransactionThread() alanındaki yeniden giren durumunu daha iyi işleme özelliği artık kullanılabilir. (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şdeğeri 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ı ele almak için withTransaction(), artık bir kontrol işine güvenmeyecek şekilde yeniden yapılandırıldı. Bunun yerine, askıya alma işlemi bloğunu işlem iş akışındaki runBlocking içinden yürütecek.

2.5.0 sürümü

2.5.0 sürümü

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.

2.5.0 sürümü

11 Ocak 2023

androidx.room:room-*:2.5.0 yayınlanır. 2.5.0 sürümü bu taahhütleri içerir.

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

  • room-runtime kaynaklarının tümü Java'dan Kotlin'e dönüştürüldü. 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şim söz dizimini 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 sayfalama desteği için yeni oda sayfalama yapıları room-paging-rxjava2, room-paging-rxjava3 ve room-paging-guava eklendi.
  • @MapInfo (Icc4b5) sürümünde anlam karışıklığını önlemek için anahtar ve değer tablosu adları sağlayan API'ler eklendi

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 taahhütleri içerir.

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

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 taahhütleri içerir.

API Değişiklikleri

  • Sorgu bağımsız değişkenlerini değişmez (Array<Any?>) olandan değişken (Array<out Any?>) olana geçiren çeşitli API'leri, Java'nın dizi davranışıyla eşleşecek şekilde düzeltin. (b/253531073)

Sürüm 2.5.0-beta01

5 Ekim 2022

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

API Değişiklikleri

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

Hata Düzeltmeleri

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

Sürüm 2.5.0-alpha03

24 Ağustos 2022

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

Yeni Özellikler

  • Benzersizlik çatışması olmadığında öğe eklemeye veya çatışma varsa öğeyi güncellemeye çalışan yeni bir kısayol notu @Upsert eklendi. (I7aaab, b/241964353)

Hata Düzeltmeleri

  • Otomatik taşıma yabancı anahtar kısıtlaması kontrolü sırasında Room artık IllegalStateException yerine SQLiteConstraintException atar. (I328dd)
  • getOpenHelper, getQueryExecutor ve getTransactionExecutor'nin getter / özellikleri için Kotlin kaynağıyla uyumlu olmayan bir değişikliği düzeltin. (Iad0ac)

Sürüm 2.5.0-alpha02

1 Haziran 2022

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

Yeni Özellikler

API Değişiklikleri

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

    Not: Kitaplığı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ıyorduysa bu durumları yeni sürümün ele alması gerekir. Örneğin, bilinen bir kaynak uyumsuzluğu değişikliği, InvalidationTracker'te artık MutableSet yerine Set türüne sahip bir parametre olması için Observer'de onInvalidate()'ü tanımlamanız gerektiğidir.

  • @MapInfo (Icc4b5) sürümünde anlam karışıklığını önlemek için anahtar ve değer tablosu adları sağlayan API'ler eklendi
  • Mülk alıcılarında @Ignore değerine yeniden izin vermek için bir kaynak uyumluluğu sorunu düzeltildi. (Ifc2fb)

Hata Düzeltmeleri

  • Yinelenen sütun çözümü için sezgisel algoritma. 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ınlanır. 2.5.0-alpha01 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Kotlin kaynaklarında Room @IntDef kullanımının zorunlu kılınmadığı sorun düzeltildi. (I75f41, b/217951311)
  • Mülk alıcılarında @Query değerine yeniden izin vermek 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ı özellikler 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ıyorduysa yeni sürüm bu mülklere erişirken ".Companion" son ekine ihtiyaç duyar.

  • Oda taşıma özelliği 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 kez veritabanı oluşturma ve taşıma işlemlerini korumak için FrameworkSQLite* düzeyinde çok işlemli kilit ve kullanım API'si eklendi. (Ied267, b/193182592)

Hata Düzeltmeleri

  • Kotlin kaynaklarında dahili mülkler için destek eklendi. Bu, Odada işlevlerin kaynak adını kullanarak alıcılar/ayarlayıcı olarak özelliklerle eşleştireceği küçük bir davranış değişikliğidir (ö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 güncellemeden sonra oluşturulan kodu tekrar kontrol edin (If6531, b/205289020)

Sürüm 2.4.3

Sürüm 2.4.3

27 Temmuz 2022

androidx.room:room-*:2.4.3 yayınlanır. 2.4.3 sürümü bu taahhütleri 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ınlanır. 2.4.2 sürümü bu taahhütleri 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)
  • Room'un Array<ByteArray> dönüş türü sorgu yöntemi için kod oluşturduğu bir hatayı çözme. (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ınlanır. 2.4.1 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

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

Sürüm 2.4.0

Sürüm 2.4.0

15 Aralık 2021

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

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

  • Otomatik Taşımalar: Room artık şemalar dışa aktarıldığı sürece taşıma işlemlerini otomatik olarak oluşturmak için bir API sunmaktadı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. Room, tablolar ve sütunların yeniden adlandırılması veya silinmesiyle ilgili ek bilgilere ihtiyaç duyduğunda @AutoMigration ek açıklaması, bu tür girişleri içeren bir spesifikasyon sınıfı tanımlayabilir. Daha fazla ayrıntı için @AutoMigration dokümanlarını inceleyin.
  • Otomatik Taşımalarda Bağımlılık Enjeksiyonu: @ProvidedAutoMigrationSpec, AutoMigrationSpec'ın çalışma zamanında RoomDatabase.Builder#addAutoMigrationSpec() aracılığıyla sağlanacağını beyan etmek için kullanılan yeni bir API'dir. Bu sayede, karmaşık bağımlılıklara ihtiyaç duyduğunda bağımlılık ekleme çerçevesi bu tür özellikleri sağlayabilir.
  • Otomatik Taşımalar için Taşıma Testi Yardımcı Programı Desteği: Room'un MigrationTestHelper özelliği, test edilen veritabanı sınıfını alan yeni bir kurucu API sağlayarak otomatik taşımaları desteklemek için güncellendi. Bu sayede yardımcı, runMigrationsAndValidate sırasında otomatik taşıma işlemlerini aynı şekilde otomatik olarak ekleyebilir.
  • 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ınlanır. 2.4.0-rc01 sürümü bu taahhütleri içerir.

Yeni Özellikler

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

Sürüm 2.4.0-beta02

17 Kasım 2021

androidx.room:room-*:2.4.0-beta02 yayınlanır. 2.4.0-beta02 sürümü bu taahhütleri içerir.

Yeni Özellikler

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

Hata Düzeltmeleri

  • Türlerdeki boşluk bilgisini dikkate alan yeni bir TypeConverter analizörü ekledik. Bu bilgiler yalnızca KSP'de kullanılabildiğinden, varsayılan olarak yalnızca KSP'de etkindir. Herhangi bir soruna neden olursa ek açıklama işlemcisineroom.useNullAwareTypeAnalysis=false değerini ileterek bu özelliği kapatabilirsiniz. Bu durumda, bu işaret ileride kaldırılacağı için lütfen hata bildiriminde bulunun. Bu yeni TypeConverter analiz aracı, yalnızca null olmayan alıcı TypeConverter'lar sağlamanız gerektiğini önerir. Bunun nedeni, yeni analiz aracının bunları null kontrolüyle sarmalayabilmesidir. Bu değişikliğin, not işlemcisi olarak KAPT veya Java kullanan (KSP'nin aksine) ve türlerde boşluk bilgisi bulunmayan kullanıcılar üzerinde herhangi bir etkisi olmadığını unutmayın. (Ia88f9, b/193437407)
  • Bir FTS öğesi ICU dize parçalayıcıyı kullanacağını beyan ettiğinde Room'un SQL hatasıyla derlenemez hale gelmesine yol açan hata düzeltildi. (I00db9, b/201753224)
  • Sürümler arasında yerleşik bir öğeye eklenen yeni sütunla ilgili otomatik taşıma işlemlerinde çözülen sorun. (I5fcb1b/193798291)
  • LEFT JOIN sorgularındaki ilişkisel sorgu yöntemi dönüş türleriyle ilgili bir sorunu giderdik. 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 bir değer bulunamazsa anahtar boş bir koleksiyonla 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ı. 2.4.0-beta01 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • Aynı otomatik taşıma işlemindeki başka bir tabloda da aynı ada sahip yeni bir sütun olduğunda otomatik taşıma işlemlerinin yeni sütun eklememesiyle ilgili sorun düzeltildi. (Ia5db5, b/200818663)
  • Oda sayfalandırması tarafından oluşturulan PagingSource uygulaması artık RoomDatabase.Builder üzerinden iletilen queryExecutor değerini kullanır. Bu nedenle, daha önce 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ınlanır. 2.4.0-alpha05 sürümü bu taahhütleri içerir.

Yeni Özellikler

API Değişiklikleri

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

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

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

@MapInfo(valueColumn = "songCount")
@Query("""
       SELECT *, COUNT(mSongId) as songCount
       FROM Artist JOIN Song ON Artist.artistName = Song.artist
       GROUP BY artistName
       """)
fun getArtistAndSongCounts(): Map<Artist, Integer>
  • 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ı

  • @Index içinde dizin sırasını belirtmek için 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ınlanır. 2.4.0-alpha04 sürümü bu kaydetmeleri içerir.

Yeni Özellikler

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

    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 Çok İlişki Haritası (Standart çoklu harita)

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

    Çoklu harita sonucu, LiveData, Rx'nin Observable veya eşzamanlı olmayan işlevler Flow gibi desteklenen ayarsız dönüş türlerine de sarılabilir.

Odalarda sesli anons

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

    @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 inşa edilmiş bir uygulamayla değiştirir. Yeni PagingSource uygulaması anahtarları farklı bir ş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'ten yüklenmeye başlar ve Key ilk yüklenen öğe olur. Bu, LoadParams.Refresh.Key'ün 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.

  • Artefakt isteğe bağlıdır ve devre dışı bırakılması durumunda Room 2.3'te kullanıma sunulan Sayfalama 3.0 için mevcut destek kullanılır. 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ınlanır. 2.4.0-alpha03 sürümü bu taahhütleri içerir.

API Değişiklikleri

  • Test altındaki veritabanı sınıfını alan yeni bir kurucu API sağlayarak Room'un MigrationTestHelper özelliğini otomatik taşımaları desteklemek için güncelleyin. Bu sayede yardımcı, runMigrationsAndValidate sırasında otomatik taşıma işlemlerini aynı şekilde otomatik olarak ekleyebilir.

Hata Düzeltmeleri

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

  • @Transaction işlevinin döndürme türü bir Flow olduğunda Room'un hata vermediği bir sorun 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ınlanır. 2.4.0-alpha02 sürümü bu kaydetmeleri içerir.

API Değişiklikleri

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

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ğırma işlevinin bazen geçersiz şekilde, çok geç veya hiç çağrılmamasına neden olan sorun düzeltildi. Uli Bubenheimer | bubenheimer@users.noreply.github.com (b/154040286) sayesinde

Sürüm 2.4.0-alpha01

21 Nisan 2021

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

Yeni Özellikler

  • Otomatik Taşımalar: Room artık şemalar dışa aktarıldığı sürece taşıma işlemlerini otomatik olarak oluşturmak için bir API sunmaktadır. Room'a otomatik taşıma oluşturması gerektiğini bildirmek için, hangi sürümlerin otomatik olarak taşınacağını belirtmek üzere yeni bir mülk @Database#autoMigrations kullanılabilir. Room, tablolar ve sütunların yeniden adlandırılması veya silinmesiyle ilgili ek bilgilere ihtiyaç duyduğunda @AutoMigration ek açıklaması, bu tür girişleri içeren bir spesifikasyon sınıfı tanımlayabilir. Daha fazla ayrıntı için @AutoMigration belgelerini inceleyin.

Hata Düzeltmeleri

  • Room'un şema doğrulaması tarafından fazladan parantez içeren defaultValue öğesinin yanlış doğrulanmasına neden olan sorun düzeltildi. b/182284899

Sürüm 2.3.0

Sürüm 2.3.0

21 Nisan 2021

androidx.room:room-*:2.3.0 yayınlanır. 2.3.0 sürümü bu taahhütleri içerir.

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

  • Yerleşik Enum Desteği: Room, artık varsayılan olarak bir Enum to String ve tam tersi tür dönüştürücü kullanır (sağlanmamışsa). Bir enum için zaten bir tür dönüştürücü varsa Room, varsayılan dönüştürücüye kıyasla bu dönüştürücüyü kullanmaya öncelik verir.
  • Sorgu geri çağırma: Room artık sorguların yürütülmek üzere olduğu durumlar için genel bir geri çağırma API'si RoomDatabase.QueryCallback sunuyor. Bu API, hata ayıklama yapılarında günlük kaydı için yararlı olabilir. Geri çağırma özelliği RoomDatabase.Builder#setQueryCallback() aracılığıyla ayarlanabilir.
  • Önceden paketlenmiş iyileştirme: Room'da artık giriş akışından okunan önceden paketlenmiş bir veritabanı kullanarak veritabanı oluşturmaya yönelik API'ler mevcuttur. Bu, önceden paketlenmiş veritabanının gzip'lenmesi gibi durumlara olanak tanır.
  • Sağlanan Tür Dönüştürücüler: Room artık uygulamanın ilklendirmelerini kontrol edebilmesi için tür dönüştürücü örnekleri sağlamaya yönelik API'lere sahiptir. Room'a sağlanacak bir tür dönüştürücüyü işaretlemek için yeni notu @ProvidedTypeConverter kullanın.
  • RxJava3 desteği: Room artık RxJava3 türlerini desteklemektedir. RxJava2'ye benzer şekilde, döndürme türü Flowable, Single, Maybe ve Completable olan DAO yöntemlerini tanımlayabilirsiniz. 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ınlanır. Sürüm 2.3.0-rc01 bu kaydetmeleri içerir.

Hata Düzeltmeleri

  • Room tarafından oluşturulan Coroutine Flow sorgularının askıya alınan bir withTransaction bloğunda 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ınlanır. 2.3.0-beta03 sürümü bu taahhütleri içerir.

Yeni Özellikler

Hata Düzeltmeleri

  • Ana iş parçacığında PagingSource oluşturulmasının ANR'ye neden olabileceği bir hata düzeltildi. (I42b74, b/181221318)
  • @ExperimentalRoomApi görünürlüğü, paket gizli yerine herkese açık olarak düzeltildi. (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. Room, sorgunun sonucunu @RawQuery ek açıklamalı DAO yöntemi için yapıldığı şekilde POJO döndürme türüne dönüştürmek için elinden geleni yapar. "Markus Riegel | hey@marcorei.com"a teşekkürler. (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 taahhütleri içerir.

Yeni Özellikler

  • Odalarda artık Kotlin Symbol Processing KSP için deneysel destek sunulmaktadır.

    KSP, ek açıklama işleyicilerini Kotlin derleyicisinde yerel olarak çalıştırmak için KAPT'nin yerini alır ve derleme sürelerini önemli ölçüde azaltır.

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

    KSP deneysel olduğu için üretim kodu için KAPT'nin kullanılmasının yine de ö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ınlanır. 2.3.0-beta01 sürümü bu taahhütleri 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() çağrısı yapılarak etkinleştirilebilir. Bu özellik, birden fazla veritabanı içeren uygulamalar için yararlıdır.

Hata Düzeltmeleri

  • Farklı çakışma stratejilerine sahip birden fazla @Update veya @Delete yöntemi içeren Dao yöntemlerinin, tanımlananı etkili bir şekilde yok sayarak stratejilerden yalnızca biriyle kod oluşturduğu bir sorun düzeltildi. (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, RoomDatabase.Builder#setQueryCallback() üzerinden ayarlanabilir. (Iaa513, b/174478034, b/74877608)
  • Room, artık varsayılan olarak bir Enum to String ve tam tersi tür dönüştürücü kullanır (sağlanmamışsa). 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

  • Enum için okumaya yönelik tek yönlü bir tür dönüştürücü zaten mevcutsa Room, istenmeyebilecek yerleşik dize - enum dönüştürücüyü yanlışlıkla kullanabilir. Bu bilinen bir sorundur ve iki yönlü dönüştürücü yapılarak düzeltilebilir. Bkz. b/175707691

Hata Düzeltmeleri

  • Room'un 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" tarafından yapılan düzeltme için teşekkürler. (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 yeni bir sürümse Room artık varsayılan olarak beginTransactionNonExclusive kullanır. Teşekkürler ‘Ahmed I. Khalil | ahmedibrahimkhali@gmail.com’! (b/126258791)

Sürüm 2.3.0-alpha03

14 Ekim 2020

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

Yeni Özellikler

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

  • Room'da artık giriş akışında okunan önceden paketlenmiş bir veritabanı kullanarak veritabanı oluşturmaya yönelik API'ler mevcuttur. Bu, önceden paketlenmiş veritabanının sıkıştırıldığı durumlar 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, @Entity ek açıklamasının dışında kullanılmasını engelleyen eksik hedef eklendi. (Iced1e)

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

Hata Düzeltmeleri

  • TypeConverters dokümanında, TypeConverters'ın yalnızca satırlar değil, sütunları / alanları dönüştürmek için kullanılabileceğini açıklığa kavuşturmak üzere güncelleme yapıldı. (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)

  • İzleyici yöntemlerini ekleme/kaldırma dokümanlarını mesaj dizilerini açıklayacak şekilde güncelleme (Ifd1d9, b/153948821)

  • Room'un, rowid sütununu bildiren FTS tablolarını yanlış doğrulamasıyla ilgili sorun düzeltildi. (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 değerini Collections.synchronizedMap() ile değiştirin (d1cfc7, b/162431855)

  • Önceden paketlenmiş bir veritabanı kopyalandığında onOpenPrepackagedDatabase geri çağırma işlevi 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 taahhütleri içerir.

Yeni Özellikler

  • RxJava3 Desteği: Room artık RxJava3 türlerini desteklemektedir. 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ınlanır. 2.3.0-alpha01 sürümü bu taahhütleri içerir.

Yeni Özellikler

  • Sayfalama 3.0 Desteği: Room artık döndürülen türü androidx.paging.PagingSource olan @Query ek açıklamalı yöntemler için uygulama oluşturmayı destekliyor.

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

API Değişiklikleri

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

Hata Düzeltmeleri

  • Room'un artımlı ek açıklama işleyiciyi etkinleştirmek için kullanılan JDK sürümünü doğru şekilde algılamaması sorunu düzeltildi. Blaz Solar (me@blaz.solar) (b/155215201) ile
  • Room, ANTLR kullanan diğer işlemcilerle sürüm çakışmalarını önlemek için ANTLR bağımlılığını artık ek açıklama işleyiciye yerleştiriyor. (b/150106190)

Sürüm 2.2.6

2.2.6 sürümü

16 Aralık 2020

androidx.room:room-*:2.2.6 yayınlanır. 2.2.6 sürümü bu kaydetmeleri 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ınlanır. 2.2.5 sürümü bu taahhütleri içerir.

Hata Düzeltmeleri

  • MultiInstanceInvalidationService değerini directBootAware yapın. "Mygod contact-git@mygod.be" hesabına teşekkürler (b/148240967)
  • Çoklu örnek geçersiz kılma etkinleştirildiğinde ve veritabanında bir FTS öğesi bulunduğunda kilitlenmeye neden olan bir hata düzeltildi. (b/148969394)
  • Room ek açıklama işleyicisine SQLite yerel kitaplıklarının yüklenmesiyle ilgili, paralel derlemeler nedeniyle derleyicinin kilitlenmesine neden olan bir sorun düzeltildi. (b/146217083)

2.2.4 sürümü

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 taahhütleri 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 yapılırken @Generated öğesinin yanlış kullanılmasıyla ilgili sorun düzeltildi. (b/146538330)
  • Kotlin'de bir DAO arayüzünde somut işlev olduğunda Room'un yanlış kod oluşturmasına neden olan sorun düzeltildi. (b/146825845)

Sürüm 2.2.3

Sürüm 2.2.3

18 Aralık 2019

androidx.room:room-*:2.2.3 yayınlandı. 2.2.3 sürümü bu taahhütleri içerir.

Hata düzeltmeleri

  • Room'un, taşıma işlemine tabi tutulmamış ve şemasında dizin içeren eski bir karma oluşturma işlemi içeren bir veritabanını doğrulayamadığı bir 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ınlanır. 2.2.2 sürümü bu taahhütleri içerir.

Hata düzeltmeleri

  • 999'dan fazla satırlı bir bire bir ilişki toplandığında Room'un ilişkili öğeleri null olarak döndürmesine neden olan bir 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ınlanır. 2.2.1 sürümü bu taahhütleri içerir.

Hata düzeltmeleri

  • Derleyici seçeneğiexpandProjection AÇIKken Room'un CURSOR_MISMATCH hakkında yanlışlıkla uyarı vermesine neden olan bir hata düzeltildi. (b/140759491)
  • Derleme sırasında sorguları doğrulamak için kullanılan eksik yerel kitaplığı işlemek üzere 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ınlanır. 2.2.0 sürümü bu taahhütleri içerir.

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

  • Önceden paketlenmiş veritabanı: RoomDatabase.Builder'deki iki yeni API, önceden doldurulmuş bir veritabanı dosyası verildiğinde RoomDatabase oluşturmak için kullanılabilir. createFromAsset(), önceden doldurulmuş veritabanı dosyasının APK'nın öğeler klasöründe olduğu durumlarda kullanılır. createFromFile() ise dosyanın rastgele bir konumda olduğu durumlarda kullanılır. Bu API'lerin kullanılması, yıkıcı taşıma işlemlerinin davranışını değiştirir. Böylece, yedek taşıma sırasında Oda, önceden doldurulmuş veritabanını (varsa) yeniden kopyalamaya çalışır. Aksi takdirde, yedek olarak tüm tabloları çıkarıp yeniden oluşturur.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 sahiptir. Varsayılan değerler veritabanı şemasının bir parçasıdır ve belirtilmesi halinde taşıma işlemleri sırasında doğrulanır. b/64088772
  • Çoklu İlişki: @Relation artık yeni bir mülkü (associateBy) içeriyor. Bu mülk, bir bağlantı tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gereken bir ilişkiyi belirtmek için kullanılan yeni bir ek açıklama (@Junction) alıyor. b/69201917
  • Bire Bir İlişkiler: @Relation ile List veya Set türü olarak ek açıklama eklenmiş POJO alanlarında uygulanan kısıtlama kaldırıldı. Bu sayede tek değerli ilişkilerin temsil edilmesi sağlandı. b/62905145
  • Hedef Varlık: @Insert, @Update ve @Delete DAO ek açıklamalarında artık DAO yönteminin işlem yapması gereken hedef tabloyu belirtmenize olanak tanıyan yeni bir targetEntity mülkü var. Bu sayede, bu DAO yöntemlerinin parametreleri, kısmi varlıklar olarak yorumlanacak rastgele POJO'lar olabilir. Uygulamada 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. Sorgudaki gözlem tabloları geçersizleştirilirse döndürülen akış yeni bir değer grubunu yeniden yayınlar. DAO işlevini Channel<T> döndürme türüyle tanımlamak bir hatadır. Bunun yerine Room, Flow kullanmanızı ve ardından Flow'yi Channel'ye dönüştürmek için komşu işlevleri kullanmanızı önerir. b/130428884
  • Gradle Artımlı Notlandırma İşlemcisi: Room artık Gradle'de izole notlandırma işleyicisi olarak kullanılabiliyor ve artımlılık, room.incremental işlemci seçeneği aracılığıyla etkinleştirilebilir. Daha fazla bilgi için Oda Derleyici Seçenekleri'ne bakın. Herhangi bir sorunla karşılaşırsanız lütfen buradan hata kaydı oluşturun. Artımlı artış özelliğini gelecekteki kararlı bir sürümde varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217
  • Genişletilmiş Projeksiyonlar: Room'un, yıldız projeksiyonu içeren bir sorguyu yalnızca döndürülen türdeki POJO'daki sütunları içerecek şekilde yeniden yazmasına neden olan yeni bir deneysel derleyici seçeneği room.expandProjection eklendi. Örneğin, yalnızca iki alan içeren SongIdAndTitle adlı bir POJO döndüren @Query("SELECT * FROM Song") içeren bir DAO yöntemi için. Ardından Room, sorguyu SELECT id, title FROM Song işlevine yeniden yazar ve dönüş türünü karşılayacak minimum sütun grubu getirilir. Bu, temel olarak, sorgu döndürülen POJO türündeki herhangi 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üme dahil edilen taahhütleri burada bulabilirsiniz.

2.2.0-beta01 odasından 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ınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Hata düzeltmeleri

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

Sürüm 2.2.0-alpha02

7 Ağustos 2019

androidx.room:room-*:2.2.0-alpha02 yayınlanır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Yeni Özellikler

  • Koordinat Akışı: @Query DAO yöntemleri artık Flow<T> dönüş türünde olabilir. Sorgudaki gözlem tabloları geçersiz hale gelirse döndürülen akış yeni bir değer grubunu yeniden yayınlar. DAO işlevini Channel<T> döndürme türüyle tanımlamak bir hatadır. Bunun yerine Room, Flow kullanmanızı ve ardından Flow'yi Channel'ye dönüştürmek için komşu işlevleri kullanmanızı önerir. b/130428884
  • Genişleyen Projeksiyonlar: Odanın sorguyu yalnızca POJO döndüren türündeki sütunları içerecek şekilde yıldız projeksiyonuyla yeniden yazmasına neden olan 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 ele alınmaktadır. Ardından Room, sorguyu SELECT id, title FROM Song işlevine yeniden yazar ve dönüş türünü karşılayacak minimum sütun grubu getirilir. Bu, sorgu döndürülen POJO türünde herhangi 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ı bir şekilde taşıdığı durumlarda RoomDatabase.Callback'a eklenen yeni bir geri çağırma API'sidir. b/79962330

Hata Düzeltmeleri

  • Alan korumalı olduğunda Room'un alan ayarlayıcı 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 atmasına neden olan bir hata düzeltildi. b/137454915
  • Odanın, @RawQuery ek açıklamasıyla birlikte devralınan askıya alma işlevinin döndürme türünü doğru şekilde tanımlamamasına neden olan hata düzeltildi. b/137878827
  • İlişkilendiren anahtar BLOB türü olduğunda, benzer bir ByteBuffer kullanmak için @Relation için oluşturulan kod güncellendi. b/137881998
  • Room'un, @Insert, @Update ve @Delete'nin kısmi varlık parametreleri olarak kullanılan POJO'larda ayarlayıcıların eksik olmasından şikayet ettiği bir hata düzeltildi. b/138664463
  • Room'un, varlık sınıfı belirli DAO yöntemlerinde kullanıldığında @Entity aracılığıyla göz ardı edilen bir sütun için eksik alıcı ve ayarlayıcılardan şikayet ettiği bir hata düzeltildi. b/138238182
  • Room'un, adlandırılmış bağlama bağımsız değişkenlerini konumsal bağımsız değişkenlere doğru şekilde dönüştürmemesi ve yeniden kullanılan parametrelerle bir sorgu yürütüldüğünde çalışma zamanında istisnaya neden olması sorunu düzeltildi. b/137254857

Sürüm 2.2.0-alpha01

10 Temmuz 2019

Yeni Özellikler

  • Önceden paketlenmiş veritabanı: RoomDatabase.Builder'deki iki yeni API, önceden doldurulmuş bir veritabanı dosyası verildiğinde RoomDatabase oluşturmak için kullanılabilir. createFromAsset(), önceden doldurulmuş veritabanı dosyasının APK'nın öğe klasöründe olduğu, createFromFile() dosyanın rastgele bir konumda olduğu durumlar için kullanılır. Bu API'lerin kullanımı, yıkıcı taşıma işlemlerinin davranışını değiştirir. Bu durumda, yedek taşıma sırasında Room, varsa önceden doldurulmuş veritabanını yeniden kopyalamaya çalışır. Aksi takdirde, tüm tabloları bırakıp yeniden oluşturur. 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 sahiptir. Varsayılan değerler veritabanı şemasının bir parçasıdır ve belirtilmesi halinde taşıma işlemleri sırasında doğrulanır. b/64088772

    Not: Veritabanı şemasında zaten varsayılan değerler varsa (ör. ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z aracılığıyla eklenen değerler) ve aynı sütunlar için @ColumnInfo aracılığıyla varsayılan değerler tanımlamaya karar verirseniz hesaba katılmayan varsayılan değerleri doğrulamak için bir taşıma işlemi sağlamanız gerekebilir. Daha fazla bilgi için Oda taşıma işlemleri başlıklı makaleyi inceleyin.

  • Çoklu İlişki: @Relation artık yeni bir mülkü (associateBy) içeriyor. Bu mülk, bir birleştirme tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gereken bir ilişkiyi belirtmek için kullanılan yeni bir ek açıklama (@Junction) alıyor. b/69201917
  • Bire Bir İlişkiler: @Relation ile List veya Set türü olarak ek açıklama eklenmiş POJO alanlarında uygulanan kısıtlama kaldırıldı. Bu sayede tek değerli ilişkilerin temsil edilmesi sağlandı. b/62905145
  • Hedef Varlık: @Insert, @Update ve @Delete DAO ek açıklamalarının artık yeni bir targetEntity mülkü var. Bu özellik, DAO yönteminin işlem yapacağı hedef tabloyu belirtmeye olanak tanır. Bu sayede, bu DAO yöntemlerinin parametreleri, kısmi varlıklar olarak yorumlanacak rastgele POJO'lar olabilir. Uygulamada bu, kısmi ekleme, silme ve güncelleme işlemlerine olanak tanır. b/127549506
  • Gradle Artımlı Ek Açıklama İşleyici: Room artık bir Gradle ek açıklama işlemcisi haline geldi ve artırılabilirlik, room.incremental işlemci seçeneğinden etkinleştirilebilir. Daha fazla bilgi için Oda Derleyici Seçenekleri'ne bakın. Herhangi bir sorunla karşılaşırsanız lütfen buradan hata kaydı oluşturun. Artımlı artış özelliğini gelecekteki kararlı bir sürümde varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217

Hata Düzeltmeleri

  • Bir sorgunun Rx akışı sorgu tamamlanmadan önce atıldığında Room artık EmptySetResultException değerini genel hata işleyiciye iletmez. b/130257475
  • @RawQuery ek açıklamasına sahip askıya alma işlevinde döndürme türü olmadığında Odanın yanlış hata mesajı göstermesine neden olan hata düzeltildi. b/134303897
  • Room artık ham türlerle DAO bağdaştırıcısı oluşturmayacaktır. b/135747255

Sürüm 2.1.0

2.1.0 sürümü

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: Room artık eşleme FTS3 veya FTS4 tablosu içeren öğeleri destekler. Eşleme tam metinli arama tablosu olan bir sınıfı tanımlamak için @Entity ile ek açıklama eklenen sınıflara artık @Fts3 veya @Fts4 ile ek açıklama eklenebilir. Daha fazla özelleştirme için FTS seçenekleri, ek açıklamanın yöntemleri aracılığıyla kullanılabilir.
  • Görüntülemeler: Room artık @DatabaseView ek açıklamasını kullanarak bir sınıfı görüntüleme olarak da bilinen depolanan sorgu olarak tanımlamayı destekliyor.
  • Komut sıraları: DAO yöntemleri artık askıya alınmış işlevler olabilir. Bu işlevden yararlanmak için room-ktx bağımlılıklarınıza ekleyin. Ktx yapıları, bir iş parçacığı 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 varlık ve POJO olarak bildirilmesini destekliyor. Oda ek açıklamaları @PrimaryKey, @ColumnInfo, @Embedded ve @Relation artık otomatik değer ek açıklamalı sınıfın soyut yöntemlerinde tanımlanabilir. Oda'nın bu ek açıklamaları doğru şekilde anlayabilmesi için @CopyAnnotations işaretinin de eklenmiş olması gerektiğini unutmayın.
  • Ek Eş Zamansız Destek: @Insert, @Delete veya @Update ile açıklama eklenen DAO yöntemlerinin yanı sıra INSERT, DELETE veya UPDATE ifadeleri içeren @Query, artık Completable, Single, Maybe Rx dönüş türlerini ve Guava'nın ListenableFuture dönüş türünü destekliyor. Ayrıca bunlar askıya alma işlevi de olabilir.
  • enableMultiInstanceInvalidation, aynı veritabanı dosyasını kullanarak birden fazla RoomDatabase örneğinde geçersiz kılma işlemini etkinleştirmek için RoomDatabase.Builder'teki yeni bir API'dir.
  • fallbackToDestructiveMigrationOnDowngrade, sürüm düşürme işlemi gerçekleşirse veritabanını otomatik olarak yeniden oluşturmak için RoomDatabase.Builder'daki yeni bir API'dir.
  • ignoredColumns, yoksayılan alanları ada göre listelemek için kullanılabilen @Entity ek açıklamalarında yeni bir API'dir.
  • Room artık veri sınıflarında Kotlin'in birincil yapıcısını düzgün şekilde kullanacak ve özelliklerin vars olarak tanımlanması gerekmeyecek.

Sürüm 2.1.0-rc01

29 Mayıs 2019

Hata Düzeltmeleri

  • Zaten kurulu 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ümleri kullananlar için çift tırnak kullanımıyla ilgili uyarı düzeltildi. b/131712640
  • InvalidationTracker'ın, birden fazla geçersiz kılma kontrolü paralel olarak yapıldığında kilitlenmeye neden olduğu hata düzeltildi. b/133457594

Sürüm 2.1.0-beta01

7 Mayıs 2019

androidx.room 2.1.0-beta01, 2.1.0-alpha07 sürümüne kıyasla herhangi bir değişiklik içermeden yayınlanmıştır. Bu sürüme dahil edilen taahhütleri burada bulabilirsiniz.

Sürüm 2.1.0-alpha07

25 Nisan 2019

API / Davranış Değişiklikleri

  • Uzatma işlevi RoomDatabase.withTransaction, artık alıcı olarak CoroutineScope içeren bir işlev bloğu almaması için değiştirildi. Böylece işlem bloğundaki öğeleri eşzamanlı olarak çalıştırmak için gereken ek coroutineScope { } sarmalayıcının atlanması önlenir.

Hata Düzeltmeleri

  • Odanın, Koleksiyon türü parametresi içeren bir Kotlin DAO işlevi için TypeConverter'ı eşleştirememesine neden olan hata düzeltildi. b/122066791

Sürüm 2.1.0-alpha06

22 Mart 2019

API / Davranış Değişiklikleri

  • Artık Room'un veritabanı işlemlerini yürütmek için birden fazla iş parçacığı kullanmaması amacıyla, eşzamansız işlem sorguları serileştirilmektedir. RoomDatabase.Builder.setTransactionExecutor(Executor), yürütücünün işlemler için kullanılacak şekilde yapılandırılmasına izin vermek üzere eklendi.
  • RoomDatabase.runInTransaction(Callable) artık kontrollü istisnaları RuntimeExceptions içine sarmalayacak. b/128623748

Hata Düzeltmeleri

  • Hem içerik tablosu hem de harici içerik FTS tablosu için gözlemciler eklenirse geçersiz kılma izleyicisinin bir içerik tablosunu gözlemlemeyi durdurduğu bir hata düzeltildi. 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, bir iş parçacığı içinde veritabanı işlemlerini güvenli bir şekilde gerçekleştirmenize olanak tanır. Room uzantıları işlevleri ve coroutine desteği room-ktx yapılarında kullanılabilir.
  • @Transaction ile ek açıklama eklenmiş soyut olmayan DAO yöntemleri artık askıya alma işlevi 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'daki beginTransaction, setTransactionSuccessful ve endTransaction için destek sonlandırıldı. Bu işlevler yerine runInTransaction ve room-ktx uzantı işlevi withTransaction kullanılmalıdır.

Hata Düzeltmeleri

  • Kullanılan kelime parçalayıcı SIMPLE ise kelime parçalayıcı bağımsız değişkenlerinin atlandığı bir hata düzeltildi. b/125427014
  • Room'un, türü iç sınıf olan parametrelere sahip askıya alma işlevlerini doğru şekilde tanımlayamadığı bir hata düzeltildi. b/123767877
  • INSERT, UPDATE veya DELETE ifadeleri içeren ertelenen @Query DAO yönteminin ana iş parçacığında sorguyu hevesle hazırladığı bir hata düzeltildi. b/123695593
  • Room'un belirli askıya alma işlevleri için yanlış kod oluşturduğu çeşitli hatalar düzeltildi. b/123466702 ve b/123457323
  • Desteği sonlandırılan yöntemlerin oluşturulan kodda doğru şekilde engellenmediği bir hata düzeltildi. b/117602586
  • androidx.sqlite'in Room bağımlılığını, bozuk veritabanlarını doğru şekilde işlemeyle ilgili düzeltmeler içeren 1.0.2 sürümüne güncellendi. b/124476912

Bilinen Sorunlar

  • Room 2.1.0-alpha05, şu anda Maven Central'da bulunmayan kotlinx-metadata-jvm yapısını temel almaktadır (KT-27991). 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 ile ek açıklama eklenmiş DAO yöntemleri artık Single, Mayble, Completable ve ListenableFuture adlı arayüz dışı türleri döndürebilir. Ayrıca, işlevler askıya alınabilir. b/120227284

API / Davranış Değişiklikleri

  • @Transaction ile ek açıklamaya sahip soyut olmayan bir DAO yöntemi Single, Mayble, Completable, LiveData veya ListenableFuture gibi bir arayüz türü döndürdüğünde Room artık hata verir. İşlemler mesaj dizisine bağlı olduğundan Room'un şu anda farklı mesaj dizilerinde sorgu gerçekleştirebilecek bir işlev etrafında 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ında istenen şekilde davranmadıkları için @Deprecated olarak işaretlendi. b/117266738

Hata Düzeltmeleri

  • DAO yöntemi askıya alma işleviyse Room'un dönüş türünün TypeConverter'unu doğru şekilde kullanmadığı bir hata düzeltildi. b/122988159
  • Room'un, devralınan askıya alma işlevlerini yanlışlıkla askıya almayan olarak tanımladığı bir hata düzeltildi. b/122902595
  • Bir @Embedded alanı üst sınıfta olduğunda ve birden fazla alt sınıfta kullanıldığında Room'un yanlış kod oluşturmasına neden olan hata düzeltildi. b/121099048
  • 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 dize parçalayıcılar, FtsOptions içinde dize sabitleri olarak tanımlanmaya devam eder. b/119234881

Yeni Özellikler

  • Komut sıraları: DAO yöntemleri artık askıya alınmış işlevler olabilir. Room'da askıya alma işlevlerini desteklemek için yeni bir yapı room-coroutines yayınlandı. b/69474692
  • @Insert, @Delete veya @Update ek açıklamalarıyla eklenen DAO yöntemlerinde artık dönüş türü olarak ListenableFuture destekleniyor. b/119418331

Hata Düzeltmeleri

  • Oda'nın, @Entity mülkündeki ignoredColumns mülkünde sütun içeren bir kurucu bulmaya çalıştığı hatayı düzelttik. b/119830714
  • Room'un, oluşturulan uygulamalarında DAO yöntem parametrelerini nihai olarak işaretlemediği bir hata düzeltildi. b/118015483
  • Özel semboller içeren bir sorguda hata bildirirken Oda 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 yol açan bir hata düzeltildi. b/119884035
  • Room'dan döndürülen LiveData'nın, sonsuza kadar gözlemlendiğinde çöp toplanması ve artık yeni veri yayınlamaması sorunu düzeltildi. b/74477406
  • Kilit anlaşmazlığını azaltmak için RoomDatabase'nin kilit kapatma özelliği güncellendi. b/117900450

Sürüm 2.1.0-alpha02

30 Ekim 2018

Yeni Özellikler

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

Hata Düzeltmeleri

  • Room'un, bir Rx dönüş türünden abone olurken ve bu türden kurtulurken ana iş parçacığında disk G/Ç işlemi gerçekleştirdiği bir hata düzeltildi. b/117201279
  • Room'un, Kotlin varlık sınıfındaki bir alan için uygun bir tür dönüştürücü bulamadığı hata düzeltildi. b/111404868
  • Room'un, bağımsız değişkeni olmayan bir Kotlin varsayılan yöntemi içeren DAO arayüz uygulaması için yanlış kod oluşturduğu bir hata düzeltildi. b/117527454
  • Room'un SQLite dil bilgisi ayrıştırıcısı güncellendi. Bu güncelleme, derleme sürelerinin uzamasına neden olan bir performans sorununu düzeltti. b/117401230

Sürüm 2.1.0-alpha01

8 Ekim 2018

Yeni Özellikler

  • FTS: Room artık eşleme FTS3 veya FTS4 tablosu içeren öğeleri destekler. @Entity ile ek açıklama eklenmiş sınıflara artık @Fts3 veya @Fts4 ile ek açıklama ekleyerek eşleme tam metin arama tablosu içeren bir sınıf tanımlayabilirsiniz. Daha fazla özelleştirme için FTS seçenekleri, ek açıklama yöntemleri aracılığıyla kullanılabilir. b/62356416
  • Görüntülemeler: Room artık @DatabaseView ek açıklamasını kullanarak bir sınıfı görüntüleme olarak da bilinen depolanan bir sorgu olarak tanımlamayı destekliyor. b/67033276
  • Auto Value: Room artık AutoValue ek açıklamalı sınıfları varlık ve POJO olarak tanımlamayı destekler. @PrimaryKey, @ColumnInfo, @Embedded ve @Relation oda ek açıklamaları artık otomatik değer ek açıklamalı sınıfların soyut yöntemlerinde tanımlanabilir. Oda'nın bu ek açıklamaları doğru şekilde anlayabilmesi için @CopyAnnotations değerinin de eklendiğini unutmayın. b/62408420
  • Ek Reçete Dönüş Türü Desteği: @Insert, @Delete veya @Update ile ek açıklama eklenmiş DAO yöntemleri artık Completable, Single<T> ve Maybe<T> reçete dönüş türlerini destekliyor. b/63317956
  • @Relation ile Değişmez Türler: Room daha önce @Relation ek açıklamalı alanların ayarlanabilir olmasını gerektiriyordu ancak artık bunlar kurucu parametreleri olabilir.
  • enableMultiInstanceInvalidation: Aynı veritabanı dosyasını kullanarak birden fazla RoomDatabase örneğinde geçersiz kılma işlemini etkinleştirmek için RoomDatabase.Builder'te bulunan yeni bir API'dir. Bu çok örnekli geçersiz kılma mekanizması, birden fazla işlemde de çalışır. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: Alt sürüme geçildiğinde veritabanını otomatik olarak yeniden oluşturmak için RoomDatabase.Builder'ta yeni bir API'dir. b/110416954
  • ignoredColumns: @Entity ek açıklamalarında, yoksayılan alanları ada göre listelemek için kullanılabilen yeni bir API'dir. Bir öğede devralınan alanları yoksaymak için kullanışlıdır. b/63522075

API / Davranış Değişiklikleri

  • RoomDatabase'deki mCallback ve mDatabase artık @Deprecated olarak adlandırılıyor ve Room'un bir sonraki büyük sürümünde kaldırılacak. b/76109329

Hata Düzeltmeleri

  • Room'un, bozuk bir veritabanından veya ilk başlatma sırasında kötü bir taşıma işleminden düzgün şekilde kurtaramadığı iki sorun düzeltildi. b/111504749 ve b/111519144
  • Room artık veri sınıflarında Kotlin'in birincil yapıcısını düzgün şekilde kullanacak ve alanların vars olarak tanımlanması gerekmeyecek. b/105769985

Sürüm 2.0.0

Sürüm 2.0.0

1 Ekim 2018

androidx.room 2.0.0, 2.0.0-rc01 sürümüne kıyasla herhangi bir değişiklik içermeden yayınlanmıştır.

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 izin vermek 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" hatasında b/73334503 sınıf/alan adını belirtin
  • RoomOpenHelper'ın, Odanın eski sürümleriyle (b/110197391) 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"
}

1.1.1 sürümü

1.1.1 sürümü

19 Haziran 2018

1.1.1 numaralı oda, 1.1.1-rc1 numaralı oda ile aynı.

Sürüm 1.1.1-rc1

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

Oda'nın taşıma sonrası ilklendirmeyi düzgün şekilde işlemediği hata düzeltildi b/79362399

Sürüm 1.1.0

Sürüm 1.1.0-beta3

19 Nisan 2018

Hata Düzeltmeleri

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

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ürerek döndürülen Single veya Maybe örneklerine 1'den fazla gözlemci eklediğinizde soruna neden olan kritik bir hata düzeltildi. b/76031240

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

Sürüm 1.1.0-beta1

21 Mart 2018

API Değişiklikleri

  • API İncelemesi geri bildirimlerine göre @RawQuery, sorgu parametresi olarak String iletmeyi artık kabul etmiyor. [SupportSQLiteQuery][ref-SupportSQLiteQuery] işlevini kullanmanız gerekir. ([SupportSQLiteQuery][ref-SupportSQLiteQuery] örneğini bağımsız değişken desteğiyle 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 değerini kabul ediyor.

Hata Düzeltmeleri

  • [RoomDatabase.clearAllTables][ref-clearAllTables] artık bir WAL kontrol noktası ayarlayarak ve veritabanını VACUUM ederek işletim sistemine yer döndürmeyi dener.
  • [@RawQuery][ref-RawQuery], Pojo Embedded alanları veya Relation'ları aracılığıyla bir veya daha fazla öğeye referans verdiği sürece artık observedEntities mülkü için herhangi bir Pojo'yu kabul ediyor. b/74041772
  • Sayfalama: Room'un DataSource uygulaması artık çok tablolu bağımlılıkları (ilişkiler ve birleştirme işlemleri gibi) doğru şekilde yönetiyor. Daha önce bu tür sonuçlar yeni sonuçları tetikleyemez veya derleyemezdi. 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, hangi başlangıç şeması sürümlerinde yıkıcı taşıma işlemlerine izin verileceği konusunda daha ayrıntılı kontrol sağlar (fallbackToDestructiveMigration ile karşılaştırıldığında) b/64989640
  • Oda, artık yalnızca daha yeni olan Paging API'lerini (alfa-4+) destekler. Kullanımdan kaldırılan LivePagedListProvider desteği sona erer. Yeni Oda alfa sürümünü kullanmak için sayfalama alpha-4 veya daha yüksek bir sayfa kullanmanız ve henüz yapmadıysanız LivePagedListProvider değerinden LivePagedListBuilder değerine geçmeniz gerekir.

Hata Düzeltmeleri

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