Room
Son Güncelleme | Kararlı Sürüm | Yayın Adayı | Beta Sürümü | Alfa Sürümü |
---|---|---|---|---|
21 Ağustos 2024 | 2.6.1 | - | - | 2.7.0-alfa07 |
Bağımlılıkları bildirme
Room'a bağımlılık eklemek için Google Maven deposunu belirler. Google'ın Maven deposunu okuyun konulu videomuzu izleyin.
Odaya bağımlılıklar şunları içerir: test odası taşıma işlemleri ve Oda RxJava
build.gradle
dosyasına ihtiyacınız olan yapıların bağımlılıklarını ekleyin.
uygulamanız veya modülünüz:
Eski
dependencies { def room_version = "2.6.1" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room_version" // To use Kotlin annotation processing tool (kapt) kapt "androidx.room:room-compiler:$room_version" // To use Kotlin Symbol Processing (KSP) ksp "androidx.room:room-compiler:$room_version" // optional - RxJava2 support for Room implementation "androidx.room:room-rxjava2:$room_version" // optional - RxJava3 support for Room implementation "androidx.room:room-rxjava3:$room_version" // optional - Guava support for Room, including Optional and ListenableFuture implementation "androidx.room:room-guava:$room_version" // optional - Test helpers testImplementation "androidx.room:room-testing:$room_version" // optional - Paging 3 Integration implementation "androidx.room:room-paging:$room_version" }
Kotlin
dependencies { val room_version = "2.6.1" implementation("androidx.room:room-runtime:$room_version") annotationProcessor("androidx.room:room-compiler:$room_version") // To use Kotlin annotation processing tool (kapt) kapt("androidx.room:room-compiler:$room_version") // To use Kotlin Symbol Processing (KSP) ksp("androidx.room:room-compiler:$room_version") // optional - Kotlin Extensions and Coroutines support for Room implementation("androidx.room:room-ktx:$room_version") // optional - RxJava2 support for Room implementation("androidx.room:room-rxjava2:$room_version") // optional - RxJava3 support for Room implementation("androidx.room:room-rxjava3:$room_version") // optional - Guava support for Room, including Optional and ListenableFuture implementation("androidx.room:room-guava:$room_version") // optional - Test helpers testImplementation("androidx.room:room-testing:$room_version") // optional - Paging 3 Integration implementation("androidx.room:room-paging:$room_version") }
KAPT eklentisini kullanma hakkında bilgi edinmek için KAPT belgelerine bakın.
KSP eklentisini kullanma hakkında bilgi için KSP hızlı başlangıç dokümanlarına bakın.
Kotlin uzantılarını kullanma hakkında bilgi için ktx dokümanlarına bakın.
Bağımlılıklar hakkında daha fazla bilgi için Derleme Bağımlılıkları Ekleme bölümüne bakın.
İsteğe bağlı olarak, Android olmayan kitaplıklar (ör. Java veya yalnızca Kotlin'e özel Gradle modülleri) için
Oda ek açıklamalarını kullanmak için androidx.room:room-common
sağlayıcısına başvurabilirsiniz.
Derleyici Seçeneklerini Yapılandırma
Oda, aşağıdaki ek açıklama işlemci seçeneklerine sahiptir.
room.schemaLocation |
directory .
Veri tabanı şemalarının dizin. Oda Taşıma İşlemleri başlıklı makaleye göz atın konulu videomuzu izleyin. |
room.incremental |
boolean .
Gradle artımlı ek açıklama işlemcisini etkinleştirir. Varsayılan değer true .
|
room.generateKotlin |
boolean .
Java yerine Kotlin kaynak dosyaları oluşturun. KSP gerekir. false varsayılan değerdir.
Daha ayrıntılı bilgi için sürüm 2.6.0 notlarına bakın.
|
Room Gradle eklentisini kullanma
Room 2.6.0 ve sonraki sürümlerde, Room Gradle eklentisini kullanarak Oda derleyicisi seçeneklerini yapılandırın. Eklenti, projeyi Bunlar, derleme görevlerinin bir çıktısı olan ve emin olmanız gerekir) doğru şekilde yapılandırıldığından önbellekteki derlemeler hakkında daha fazla bilgi edinebilirsiniz.
Eklentiyi eklemek için üst düzey Gradle derleme dosyanızda eklentisi ve sürümü.
Eski
plugins { id 'androidx.room' version "$room_version" apply false }
Kotlin
plugins { id("androidx.room") version "$room_version" apply false }
Modül düzeyindeki Gradle derleme dosyasında, eklentiyi uygulayın ve room
uzantısına sahip olur.
Eski
plugins { id 'androidx.room' } android { ... room { schemaDirectory "$projectDir/schemas" } }
Kotlin
plugins { id("androidx.room") } android { ... room { schemaDirectory("$projectDir/schemas") } }
Room Gradle eklentisi kullanılırken schemaDirectory
öğesinin ayarlanması gerekir. Bu
Room derleyiciyi, çeşitli derleme görevlerini ve arka uçlarını yapılandırır
(javac, KAPT, KSP) ekleyerek şema dosyalarını aromalı klasörlere dönüştürebilirsiniz.
schemas/flavorOneDebug/com.package.MyDatabase/1.json
Bu dosyalar
depoda kontrol edildi.
Bazı seçenekler, Room Gradle eklentisinin tüm sürümlerinde yapılandırılamaz.
olsalar da Oda derleyicisi tarafından desteklenmeleri gerekir. Aşağıdaki tabloda her bir
seçeneğini içerir ve Room Gradle eklentisinin
room
uzantısını kullanarak bu seçeneği yapılandırabilirsiniz. Sizin sürümünüz daha düşükse
veya seçenek henüz desteklenmiyorsa
not işlemci seçeneklerini kullanın.
Option | Sürümden bu yana |
---|---|
room.schemaLocation (zorunlu) |
2.6.0 |
room.incremental |
- |
room.generateKotlin |
- |
Ek açıklama işlemci seçeneklerini kullan
Room Gradle eklentisini kullanmıyorsanız veya kullanmak istediğiniz seçenek kullanılmıyorsa desteklenen bir sürümü kullanıyorsanız Odayı ek açıklama işlemci seçenekleri için Derleme bağımlılıkları ekleyin. Nasıl? ek açıklama seçeneklerini belirtmeniz, Oda için KSP veya KAPT kullanıp kullanmadığınıza bağlıdır.
Eski
// For KSP ksp { arg("option_name", "option_value") // other otions... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += [ "option_name":"option_value", // other options... ] } } } }
Kotlin
// For KSP ksp { arg("option_name", "option_value") // other options... } // For javac and KAPT android { ... defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments += mapOf( "option_name" to "option_value", // other options... ) } } } }
room.schemaLocation
basit bir tür değil de bir dizin olduğu için
bu seçeneği eklerken CommandLineArgumentsProvider
kullanmak
olduğunu tespit ettik.
Oda veritabanınızı taşıma
, aşağıdakileri içeren tam bir CommandLineArgumentsProvider
uygulamasını gösterir:
konumlandıracaktır.
Geri bildirim
Geri bildiriminiz Jetpack'i iyileştirmemize yardımcı olacaktır. Yeni sorunlarla karşılaşırsanız veya fikir edinebilirsiniz. Daha fazla bilgi için lütfen mevcut sorunlar tıklayın. Oyunuzu mevcut bir soruna eklemek için yıldız düğmesini tıklayın.
Sorun İzleyici dokümanlarına bakın konulu videomuzu izleyin.
Sürüm 2.7
Sürüm 2.7.0-alpha07
21 Ağustos 2024
androidx.room:room-*:2.7.0-alpha07
yayınlandı. Sürüm 2.7.0-alpha07 bu kaydetmeleri içerir.
Yeni Özellikler
- Room Gradle eklentisi artık dışa aktarılan şemaları
MigrationTestHelper
tarafından kullanılabilmesi için Android Araç Testi kaynak kaynaklarına otomatik olarak ekleyecek.
Hata Düzeltmeleri
initialize
işlevinde "gerçek" değiştiricisi bulunmayanRoomDatabaseConstructor
"gerçek" değeri, bu işlev "bekle" beyanında da geçersiz kılındıysa bu sorun düzeltildi. (359631627)RoomDatabaseConstructor
için oluşturulan "gerçek" değeriyle ilgili "beklenti" beyanının görünürlüğüyle eşleşmeyen sorun düzeltildi. (358138953)
Sürüm 2.7.0-alpha06
7 Ağustos 2024
androidx.room:room-*:2.7.0-alpha06
yayınlandı. Sürüm 2.7.0-alpha06 bu kaydetmeleri içerir.
API Değişiklikleri
- Bir KMP projesinde
RoomDatabase
için örneklendirme ayarlarını değiştirin.
Kotlin 2.0 derleme modeli nedeniyle, instantiateImpl()
adlı oluşturulacak bir işleve referans verme stratejisi daha uzun süredir uygulanabilir. instantiateImpl()
stratejisinin yerini alacak iki yeni API (@ConstructedBy
ve RoomDatabaseConstructor
) kullanıma sunuldu. Yeni strateji aşağıdaki gibidir:
RoomDatabaseConstructor
uygulayan bir beklenen nesne tanımlayınexpect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
@ConstructedBy
kullanarak nesneyi@Database
bildirimine bağlayın@Database(...) @ConstructedBy(MyDatabaseCtor::class) // NEW abstract class MyDatabase : RoomDatabase
Fabrika bağımsız değişkenini iletmeden yeni bir veritabanı örneği oluşturma
fun createNewDatabase(path: String) = Room.databaseBuilder<AppDatabase>(name = path) .setDriver(BundledSQLiteDriver()) .setQueryCoroutineContext(Dispatchers.IO) .build()
b/316978491 ile ilgili düzeltmeler, b/338446862 ve b/342905180
- Ham SQL dizesini ve bağımsız değişkenleri bir ifadeye bağlamak için kullanılan işlevi açısından
SupportSQLiteQuery
benzeri,RoomRawQuery
adında yeni bir API eklenerek Room KMP'de@RawQuery
desteği.@RawQuery
ek açıklamalı işlevleri artıkRoomRawQuery
öğesini tek parametre olarak kabul edebilir. (Iea844, b/330586815) CoroutineContext
kabul eden birsetQueryCallback()
aşırı yüklemesi ekleyin. (Id66ff, b/309996304)linuxArm64
Kotlin Çoklu Platform hedefi (I139d3, b/338268719) için destek eklendi
Hata Düzeltmeleri
- Odanın, Android dışı hedeflerde yanlışlıkla
recursiveFetchArrayMap
araması oluşturmasına neden olan sorunu düzeltin. (710c36, b/352482325) - Odaların, KMP projesinde zaman zaman "Bağlantı girişimi zaman aşımına uğradı" ile ilgili istisna bildirmesine neden olan sorun düzeltildi. (fa72d0, b/347737870)
- Diğer tablolar yeni yabancı anahtarlara uyum sağlamak için şemalarını değiştirmeden çok önce yabancı anahtarları kontrol eden otomatik taşıma işlemlerinde yaşanan bir sorunu düzeltti. (7672c0, b/352085724)
Sürüm 2.7.0-alpha05
10 Temmuz 2024
androidx.room:room-*:2.7.0-alpha05
yayınlandı. Sürüm 2.7.0-alpha05 bu kaydetmeleri içerir.
API Değişiklikleri
SQLiteKt
adlı dosyaSQLite
veBundledSQLiteKt
adlı dosyaBundledSQLite
olarak yeniden adlandırıldı. (I8b501)
Hata Düzeltmeleri
AndroidSQLiteDriver
kullanılırkenRoomDatabase
öğesinin kilitlenmesine veya bağlantı zaman aşımıyla hata vermesine neden olan hata düzeltildi.
Sürüm 2.7.0-alpha04
12 Haziran 2024
androidx.room:room-*:2.7.0-alpha04
yayınlandı. Sürüm 2.7.0-alpha04 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- DAO'da çoklu harita döndürme türü tanımlandığında Odanın ek açıklama işlemcisinde uyumsuz KMP kodu oluşturulmasına neden olan bir sorun düzeltildi. (b/340983093)
@Database
ek açıklamalı sınıfın hiçbir paketi olmadığında Odanın oluşturulan veritabanı uygulamasını bulamamasına neden olan sorun düzeltildi. (b/342097292)- Otomatik kapatma ve birden çok örneği geçersiz kılma özelliklerinin etkinleştirilmesi, veritabanı boşta olduğu için otomatik olarak kapatıldığında bazen
ConcurrentModificationException
oluşmasına neden olan sorun düzeltildi.
Sürüm 2.7.0-alpha03
29 Mayıs 2024
androidx.room:room-*:2.7.0-alpha03
yayınlandı. Sürüm 2.7.0-alpha03 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Kotlin 2.0 ve KSP 2.0 ile ilgili çeşitli sorunları düzeltin. KSP 2 desteği sunan Kotlin 2.0 sürümünün henüz tamamlanmadığını ve ekibin yeni derleyicideki çeşitli API'ler ve davranış değişiklikleri üzerinde çalıştığını unutmayın. (b/314151707)
Sürüm 2.7.0-alpha02
14 Mayıs 2024
androidx.room:room-*:2.7.0-alpha02
yayınlandı. Sürüm 2.7.0-alpha02 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Çeşitli KSP sorunları düzeltildi.
Sürüm 2.7.0-alpha01
1 Mayıs 2024
androidx.room:room-*:2.7.0-alpha01
yayınlandı. Sürüm 2.7.0-alpha01 bu kaydetmeleri içerir.
Yeni Özellikler
- Kotlin Çoklu Platform (KMP) Desteği: Bu sürümde Room, Kotlin Multiplatform (KMP) kitaplığı olacak şekilde yeniden düzenlendi. Hâlâ yapılacak işler olsa da bu sürümde, Room'da işlevlerin büyük bir kısmının "ortak" hale getirildiği (çok platformlu) yeni bir sürüm kullanıma sunuluyor. Şu anda Android, iOS, JVM (Masaüstü), yerel Mac ve yerel Linux platformları desteklenir. Yeni desteklenen platformlarda eksik olan tüm işlevler, gelecekteki Oda sürümlerinde "özellik tamamlandı" durumuna getirilecektir.
Room KMP'yi kullanmaya nasıl başlayacağınız hakkında daha fazla bilgi için lütfen resmi Room KMP belgelerini inceleyin.
- İşleme KSP aracılığıyla yapılıyorsa KSP'de Kotlin Kodu Oluşturma varsayılan olarak AÇIK durumdadır. Room, KAPT veya yalnızca Java projeleri için Java kaynakları oluşturmaya devam eder.
API Değişiklikleri
- Oluşturulan
RoomDatabase
uygulamasını örneklendirirken yansımanın kullanılmaması için Oda tarafından oluşturulan bir işlevle kullanılması amaçlanan lambda parametresini alan birRoom.databaseBuilder()
aşırı yüklemesi eklendi. Örnek kullanım:
Room.databaseBuilder<MyDatabase>(
context = appContext,
name = dbFilePath,
factory = { MyDatabase::class.instantiateImpl() }
)
CoroutineContext
bulunan bir Odayı yapılandırmaya yönelik API, oluşturucuya eklendi:RoomDatabase.Builder.setQueryCoroutineContext
. BirRoomDatabase
öğesinin,setQueryExecutor
kullanan yürütücülerden yalnızca biriyle veya eş yordam bağlamıyla yapılandırılabileceğini, ancak ikisinin aynı anda yapılandırılamayacağını unutmayın.- Odayı bir
SQLite
Sürücüsü ile yapılandırmak için API eklendi:RoomDatabase.Builder.setDriver()
.SQLite
Driver API hakkında daha fazla bilgi için SQLite KMP dokümanlarına bakın. - Sürücü API'lerinden temel
SQLiteConnection
öğesine erişmek için API'ler eklendi:RoomDatabase.useReaderConnection
veRoomDatabase.useWriterConnection
. - Çeşitli Oda ile alakalı geri çağırmalarda artık
SupportSQLiteDatabase
yerineSQLiteConnection
alan aşırı yüklenmiş bir sürüm var. Bunlar, KMP projesine taşınırken geçersiz kılınacak şekilde tasarlanmıştır. Bir Android uygulamasındaki oda kullanımlarını ortak bir KMP modülüne taşıma hakkında daha fazla bilgi için taşıma rehberine bakın. Geri çağırma işlevleri:Migration.migrate(SQLiteConnection)
AutoMigrationSpec.onPostMigrate(SQLiteConnection)
RoomDatabase.Callback.onCreate(SQLiteConnection)
RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
RoomDatabase.Callback.onOpen(SQLiteConnection)
- KTX yapısı
androidx.room:room-ktx
, tüm API'leriyle birlikteandroidx.room:room-runtime
ile birleştirildi. Yapı artık boş. Lütfen onu bağımlılık listenizden kaldırın.
Sürüm 2.6
Sürüm 2.6.1
29 Kasım 2023
androidx.room:room-*:2.6.1
yayınlandı. Sürüm 2.6.1 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Oluşturulan kodda,
EntityCursorConverter
öğesindeki Çift sütun değerinin 0,0 yerine 0 olarak ayarlandığı sorun çözüldü. Kayan türde sütunlara yönelik benzer bir kenar büyük harf için olası bir düzeltme de eklenmiştir. (Id75f5, b/304584179) PagingSource
yüklemelerinden atılan istisnalar, artık Atılabilir öğe içerenLoadStateUpdate
öğesininLoadResult.Error
öğesi olarak yayılacak. Bu hata durumuPagingDataAdapter.loadStateFlow(Views)
veyaLazyPagingItems.loadState(Compose)
ile gözlemlenebilir. Bunun, geçmişteki yükleme hatalarının, yüklemeyi tetikleyen dao yöntemi tarafından atılan bir İstisna olarak ortaya çıkacağı davranışsal bir değişiklik anlamına geldiğini unutmayın. (I93887, b/302708983)
Sürüm 2.6.0
18 Ekim 2023
androidx.room:room-*:2.6.0
yayınlandı. 2.6.0 sürümü bu kaydetmeleri içerir.
2.5.0'dan bu yana önemli değişiklikler
- Kotlin kod oluşturmayı etkinleştirme seçeneği (veya "Kotlin CodeGen"), artık Oda KSP'sinde kullanılabilir. (4297ec0). Room'da Kotlin CodeGen'i etkinleştirmek için KSP için işlemci seçeneklerinize
room.generateKotlin
seçenek adını ekleyin. KSP için işlemci seçeneklerinin nasıl iletileceği hakkında daha fazla bilgi edinmek üzere KSP belgelerini inceleyin.
Not: Kotlin CodeGen'i kullanırken, eklenen ek kısıtlamaların olduğunu unutmamak önemlidir. Kotlin CodeGen'de DAO alıcıları veya DAO sorguları olarak soyut özelliklere izin verilmez. Bunun yerine, özellik değerinin sabit olduğu ve sabit depolanan bir sonuca sahip olduğu yanlış düşüncesini ortadan kaldırmak için işlev olarak yeniden yazılması beklenir. Eklenen bir diğer kısıtlama ise Kotlin CodeGen için Room'da boş değer atanabilir toplama dönüş türlerine izin verilmemesidir.
Uyarı: Kotlin CodeGen kullanırken projelerinizin boş değer atanması açısından daha katı olduğunu görebilirsiniz. Kotlin CodeGen'de, bağımsız değişkenlerin boş değeri önemlidir. Java'da ise bu çoğu zaman göz ardı edilir. Örneğin, "Akış<foo\>" döndürme türünüz olduğunu ve tablonun boş olduğunu varsayalım. Bu, Java CodeGen'de herhangi bir soruna neden olmaz ancak Kotlin CodeGen'de bir hata alırsınız. Bunu önlemek için null değer verildiğini varsayarak "Flow<foo?\>" işlevini kullanmanız gerekir. </foo?\></foo\>
- Room Gradle eklentisi için yeni yapı
androidx.room
kimliğine sahip Oda'ya eklendi. Bu yapı, Room'da Gradle ek açıklama işlemci seçenekleri aracılığıyla şema giriş ve çıkışlarına sahip olma ile ilgili mevcut çeşitli sorunları çözer. Daha ayrıntılı bilgi için Oda Sürümü 2.6.0-alpha02 sürüm notlarına bakın. - Oda Öğelerindeki değer sınıfları artık KSP için desteklenmektedir. (4194095)
- DAO işlevlerinde iç içe yerleştirilmiş Harita döndürme türleri artık Oda'da destekleniyor. (I13f48, 203008711)
Sürüm 2.6.0-rc01
20 Eylül 2023
androidx.room:room-*:2.6.0-rc01
yayınlandı. 2.6.0-rc01 sürümü bu kaydetmeleri içerir.
Sürüm 2.6.0-beta01
23 Ağustos 2023
androidx.room:room-*:2.6.0-beta01
yayınlandı. Sürüm 2.6.0-beta01 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Bir upsert sırasında
2067 SQLITE_CONSTRAINT_UNIQUE
istisnası atıldığında karşılaşılan kurulum sırasındaSQLite
özel durum istisnası işlendiğinde, upsert bir güncelleme gerçekleştirmesi gerekir. (If2849, b/243039555)
Sürüm 2.6.0-alpha03
9 Ağustos 2023
androidx.room:room-*:2.6.0-alpha03
yayınlandı. 2.6.0-alpha03 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- DAO işlevlerinde iç içe yerleştirilmiş Harita döndürme türleri artık Oda'da destekleniyor. (I13f48, 203008711)
API Değişiklikleri
@MapInfo
yerine artık desteği sonlandırılan@MapColumn
adlı yeni bir ek açıklama türü oluşturuldu. Bir@MapInfo
ek açıklamasında sağlanan her bir sütun adı (keyColumnName
,valueColumnName
veya her ikisi) için yalnızcacolumnName
ile bir@MapColumn
ek açıklaması bildirmeniz ve DAO işlevinin döndürme türünde, başvurulan belirli tür bağımsız değişkeninde (Haritanın anahtarı veya değeri) ek açıklamayı kullanmanız gerekir. Bunun nedeni,@MapColumn
ek açıklamasının,@MapInfo
gibi işlevin kendisi yerine, bir DAO işlevinin döndürülen türü içindeki tür bağımsız değişkeninde doğrudan kullanılmasıdır. Daha fazla bilgi için lütfen@MapColumn
dokümanlarına bakın. (Ib0305, b/203008711)- API dosyaları, uyumluluk engellemesine açıklama ekleyecek şekilde güncellendi (I8e87a, b/287516207)
- Room Gradle eklentisi API'leri her zaman her varyant için yapılandırma gerektirmeyecek şekilde güncellendi. Böylece eklenti, birden fazla dizin oluşturmadan tüm varyantlar için global konumu kabul edebilir. Böylece, daha sorunsuz taşıma işlemleri gerçekleştirilebilir. Bu da, eklentilerin (yeniden oluşturulabilir ve önbelleğe alınabilir derlemeler) avantajlarından yararlanmaya devam ederken çeşitleri veya derleme türü şemalarını manuel olarak yapılandıracak kadar da esnektir. (I09d6f, b/278266663)
Hata Düzeltmeleri
QueryInterceptorStatement
sisteminde olası bellek sızıntısı güvenlik açığı düzeltildi. (I193d1)QueryInterceptorDatabase execSQL()
işlevindeki hatalı davranış düzeltildi. (Iefdc8)
Sürüm 2.6.0-alpha02
21 Haziran 2023
androidx.room:room-*:2.6.0-alpha02
yayınlandı. 2.6.0-alpha02 sürümü bu kaydetmeleri içerir.
Room Gradle Eklentisi
Bu yeni sürüm, Room Gradle Plugin için androidx.room
kimlikli yeni bir yapı içeriyor. Bu yapı, Room'da Gradle ek açıklama işlemci seçenekleri aracılığıyla şema giriş ve çıkışlarına sahip olma ile ilgili mevcut çeşitli sorunları çözer. Room Gradle eklentisi projeyi, otomatik taşıma işlemleri için kullanılan ve derleme görevlerinin çıkışı olan şemalar, yeniden üretilebilir ve önbelleğe alınabilir derlemelere sahip olacak şekilde doğru şekilde yapılandırılacak şekilde yapılandırır. Eklenti, temel şema konumunu yapılandırmak için bir DSL sunar:
room {
schemaDirectory("$projectDir/schemas/")
}
Ardından eklenti, Room derleyicisini, çeşitli derleme görevlerini ve arka uçlarını (javac, KAPT, KSP) şema dosyalarını aromalı klasörlerde (ör. schemas/flavorOneDebug/com.package.MyDatabase/1.json
) oluşturacak şekilde yapılandırır. Bu dosyalar, her zaman olduğu gibi doğrulama ve otomatik taşıma işlemleri için kullanılacak depoya denetlenir. Ek açıklama işlemci seçenekleri yerine eklentiyi kullanmaya geçişin ardından, mevcut şema dosyalarının eklenti tarafından oluşturulan oluşturulan bilgi dizinlerine kopyalanması gerekir. Bu, manuel olarak yapılması gereken tek seferlik bir taşıma işlemidir. developers.android.com adresindeki şema dokümanları, geri bildirim ele alındığında ve eklenti kararlı hale geldiğinde ileride güncellenecektir. Bu nedenle, lütfen deneyin.
API Değişiklikleri
RoomDatabase.QueryCallback
, SAM dönüşümü kullanımlarına izin veren işlevsel bir arayüz olarak tanımlanmıştır. (Iab8ea, b/281008549)
Hata Düzeltmeleri
- Room kaynaklarının Java'dan Kotlin'e taşınmasından sonra Robolectric'te veritabanı örneklendirirken ortaya çıkan sorun çözme. (Ic053c, b/274924903)
Sürüm 2.6.0-alpha01
22 Mart 2023
androidx.room:room-*:2.6.0-alpha01
yayınlandı. 2.6.0-alpha01 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Room'da KSP için değer sınıflarını destekleme. Oda, artık Varlıklar bölümündeki değer sınıflarını destekleyebilir. (4194095)
- Kotlin kodu oluşturma(veya "Kotlin CodeGen") artık Oda'da (4297ec0) etkinleştirilebilir. Room'da Kotlin CodeGen'i etkinleştirmek için KSP için işlemci seçeneklerinize
room.generateKotlin
seçenek adını ekleyin. KSP için işlemci seçeneklerinin nasıl iletileceği hakkında daha fazla bilgi edinmek üzere KSP belgelerini inceleyin.
Not: Kotlin CodeGen'i kullanırken, eklenen ek kısıtlamaların olduğunu unutmamak önemlidir. Kotlin CodeGen'de DAO alıcıları veya DAO sorguları olarak soyut özelliklere izin verilmez. Bunun yerine, özellik değerinin sabit olduğu ve sabit depolanan bir sonuca sahip olduğu yanlış düşüncesini ortadan kaldırmak için işlev olarak yeniden yazılması beklenir. Eklenen bir diğer kısıtlama ise Kotlin CodeGen için Room'da boş değer atanabilir toplama dönüş türlerine izin verilmemesidir.
Uyarı: Kotlin CodeGen kullanırken projelerinizin boş değer atanması açısından daha katı olduğunu görebilirsiniz. Kotlin CodeGen'de, bağımsız değişkenlerin boş değeri önemlidir. Java'da ise bu çoğu zaman göz ardı edilir. Örneğin, "Akış<foo\>" döndürme türünüz olduğunu ve tablonun boş olduğunu varsayalım. Bu, Java CodeGen'de herhangi bir soruna neden olmaz ancak Kotlin CodeGen'de bir hata alırsınız. Bunu önlemek için null değer verildiğini varsayarak "Flow<foo?\>" işlevini kullanmanız gerekir. </foo?\></foo\>
API Değişiklikleri
- DAO yöntemi dönüş türlerinde boş değerli koleksiyonların anlamsız kullanımına karşı koruma. (I777dc, b/253271782, b/259426907)
- Geçersiz kılma izleyici değişikliklerine neden olan bir Akış oluşturmak için bir API ekleyin. API, veritabanı değişikliklerine tepki vermesi gereken akışları oluşturmak için kullanışlıdır. (I8c790, b/252899305)
Hata Düzeltmeleri
- Kotlin kod oluşturucuda soyut özelliklere, DAO alıcıları veya DAO sorguları olarak izin vermeyin. Bunun yerine, özellik değerinin sabit olduğu ve depolanan sabit bir sonuca sahip olduğu gibi yanlış bir algıdan kaçınmak için bu özelliklerin işlev olarak yeniden yazılması gerekir. (If6a13, b/127483380, b/257967987)
Sürüm 2.5.2
Sürüm 2.5.2
21 Haziran 2023
androidx.room:room-*:2.5.2
yayınlandı. Sürüm 2.5.2 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- kotlinx-metadata-jvm ile ilgili uyumsuzluk sorununu düzeltin. (386d5c)
- Robolectric testinde kullanıldığında Room'un hata vermesine neden olan bir sorun düzeltildi. (f79bea, b/274924903)
Sürüm 2.5.1
Sürüm 2.5.1
22 Mart 2023
androidx.room:room-*:2.5.1
yayınlandı. Sürüm 2.5.1 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Veritabanı zaten açıksa
FrameworkSQLiteHelper
içindeki veritabanı üst dizinini kontrol etmekten kaçının. (5de86b8) - Veritabanının zaten açık olup olmadığını kontrol ederken bir
isOpenInternal
kontrolü kullanın. (e91fb35) - Odanın
acquireTransactionThread()
bölümünde alıcı destek kaydının daha iyi işlenmesi artık mümkün. (219f98b). Room, askıya alma işlemi sırasında işlem yürütücüden gelen bir iş parçacığını kullanır, bunun içinde bir etkinlik döngüsü başlatır ve tümünün işlem eş yordamı içinde kapsüllenmesi için veritabanı işlemlerini askıya alan veritabanı işlemlerini bu iş parçacığına gönderir. Genellikle işlem ileti dizisinin işlemi başlatan ileti dizisinden farklı olması beklenir ancak bazı durumlarda aynıdır. Bu tür yeniden giriş durumlarının işlenmesi içinwithTransaction()
, artık bir kontrol işine bağlı kalmayacak şekilde yeniden düzenlendi. Bunun yerine, askıya alma işlemi bloğunu işlem ileti dizisindekirunBlocking
içinden yürütecek.
Sürüm 2.5.0
Sürüm 2.5.0
22 Şubat 2023
androidx.room:room-paging-guava:2.5.0
, androidx.room:room-paging-rxjava2:2.5.0
ve androidx.room:room-paging-rxjava3:2.5.0
serbest bırakıldı. 2.5.0 sürümü bu kaydetmeleri içerir.
Sürüm 2.5.0
11 Ocak 2023
androidx.room:room-*:2.5.0
yayınlandı. 2.5.0 sürümü bu kaydetmeleri içerir.
2.4.0'dan bu yana önemli değişiklikler
room-runtime
kaynağın tümü Java'dan Kotlin'e dönüştürüldü. Kodunuz Kotlin'deyse, kitaplığın Kotlin'e dönüştürülmesi nedeniyle kaynak uyumsuzluğu sorunlarıyla karşılaşabileceğinizi unutmayın. Örneğin, bilinen bir kaynak uyumsuzluğu değişikliği,InvalidationTracker
ürünündeMutableSet
yerineSet
türünde bir parametreye sahip olmak için artıkObserver
içindeonInvalidate()
değerini bildirmeniz gerektiğidir. Ayrıca, belirli alıcı yöntemleri, Kotlin dosyalarında mülk erişimi söz dizimi gerektiren mülklere dönüştürüldü. Önemli uyumsuzluklar varsa lütfen hata bildiriminde bulunun.- Benzersizlik çakışması olmadığında öğe eklemeye veya çakışma durumunda öğeyi güncellemeye çalışan
@Upsert
adlı yeni bir kısayol ek açıklaması eklendi. (I7aaab, b/241964353) - Oda Servisleri'ni desteklemek için
room-paging-rxjava2
,room-paging-rxjava3
veroom-paging-guava
adlı yeni oda çağırma yapıları eklendi. @MapInfo
ürününde (Icc4b5) belirsizliği gidermek için anahtar ve değer tablosu adları sağlamaya yönelik API'ler eklendi
Sürüm 2.5.0-rc01
7 Aralık 2022
androidx.room:room-*:2.5.0-rc01
yayınlandı. Sürüm 2.5.0-rc01 bu kaydetmeleri içerir.
- Bu sürüm,
2.5.0-beta02
ile aynı.
Sürüm 2.5.0-beta02
9 Kasım 2022
androidx.room:room-*:2.5.0-beta02
yayınlandı. Sürüm 2.5.0-beta02 bu kaydetmeleri içerir.
API Değişiklikleri
- Java'nın dizi davranışıyla eşleştirmek için değişkenden (
Array<Any?>
) sorgu bağımsız değişkenine (Array<out Any?>
) sorgu bağımsız değişkeni alan çeşitli API'leri düzeltin. (b/253531073)
Sürüm 2.5.0-beta01
5 Ekim 2022
androidx.room:room-*:2.5.0-beta01
yayınlandı. Sürüm 2.5.0-beta01 bu kaydetmeleri içerir.
API Değişiklikleri
@Upsert
sürümünü destekleyen minimum sürümü API 16 olarak kısıtlayın. Bunun nedeni, eski API'lerde birincil anahtar kısıtlama çakışmasının kimliğinin doğrulanamamasıdır. (I5f67f, b/243039555)
Hata Düzeltmeleri
- Gölge tabloların hatalı bir şekilde şema
.json
dosyalarına aktarılmasına ve bu tabloların bozulmasına neden olan sorun düzeltildi. (I4f83b, b/246751839)
Sürüm 2.5.0-alpha03
24 Ağustos 2022
androidx.room:room-*:2.5.0-alpha03
yayınlandı. Sürüm 2.5.0-alpha03 bu kaydetmeleri içerir.
Yeni Özellikler
- Benzersizlik çakışması olmadığında öğe eklemeye veya çakışma durumunda öğeyi güncellemeye çalışan
@Upsert
adlı yeni bir kısayol ek açıklaması eklendi. (I7aaab, b/241964353)
Hata Düzeltmeleri
- Oda, otomatik taşıma yabancı anahtar kısıtlama kontrolü sırasında
IllegalStateException
yerine birSQLiteConstraintException
atar. (I328dd) getOpenHelper
,getQueryExecutor
vegetTransactionExecutor
öğelerinin alıcısı / özellikleri için uyumsuz Kotlin kaynağındaki değişikliği düzeltin. (Iad0ac)
Sürüm 2.5.0-alpha02
1 Haziran 2022
androidx.room:room-*:2.5.0-alpha02
yayınlandı. 2.5.0-alpha02 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Odalarda Destek için
room-paging-rxjava2
,room-paging-rxjava3
veroom-paging-guava
yeniroom-paging
yapıları eklendi.(41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,b/203
API Değişiklikleri
room-runtime
içeriğinin tamamı Java'dan Kotlin'e dönüştürüldü. (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c25, I96c25,Not: Kütüphanenin Kotlin'e dönüştürülmesi nedeniyle kaynak uyumsuzluğu sorunlarıyla karşılaşabilirsiniz. Kodunuz Kotlin'deyse ve Room'un eski sürümünü çağırıyorsa yeni sürümün bu tür durumları ele alması gerekir. Örneğin, bilinen bir kaynak uyumsuzluğu değişikliği,
InvalidationTracker
ürünündeMutableSet
yerineSet
türünde bir parametreye sahip olmak için artıkObserver
içindeonInvalidate()
değerini bildirmeniz gerektiğidir.@MapInfo
ürününde (Icc4b5) belirsizliği gidermek için anahtar ve değer tablosu adları sağlamaya yönelik API'ler eklendi- Mülk alıcılarda
@Ignore
iznini yeniden etkinleştirmek için kaynak uyumluluğu sorununu düzeltin. (Ifc2fb)
Hata Düzeltmeleri
- Yinelenen sütun çözümleme buluşsal algoritması. Oda, artık çoklu eşleme sorgusundaki belirsiz sütunları çözümlemeye çalışacak. Bu, aynı ada sahip tablolar içeren tablolara sahip JOIN'lerin bir sonuç veri nesnesiyle doğru şekilde eşlenmesine olanak tanır. (I4b444, b/201306012, b/212279118)
Sürüm 2.5.0-alpha01
23 Şubat 2022
androidx.room:room-*:2.5.0-alpha01
yayınlandı. Sürüm 2.5.0-alpha01 bu kaydetmeleri içerir.
API Değişiklikleri
- Oda
@IntDef
kullanımının Kotlin kaynaklarında zorunlu kılınmamasına neden olan sorun düzeltildi. (I75f41, b/217951311) - Mülk alıcılarında
@Query
iznini yeniden etkinleştirmek için bir kaynak uyumluluğu sorunu düzeltildi. (I0a09b) - Ortak oda, Java'dan Kotlin'e dönüştürüldü. (I69c48, b/206858235)
Not: Kitaplık Kotlin'e dönüştürülürken bazı mülkler tamamlayıcı nesnelere taşındığından kaynak uyumsuzluğu sorunlarıyla karşılaşabilirsiniz. Kodunuz Kotlin'deyse ve Oda'nın eski sürümünü çağırıyorsa yeni sürümde ".Companion" öğesi gereklidir. soneke tabi tutulması gerekir.
- Oda taşıma işlemi Java'dan Kotlin'e dönüştürüldü. (I2724b, b/206858622)
room-runtime
ile ilgilipaging
dosya Java'dan Kotlin'e dönüştürüldü. (I82fc8, b/206859668)- Çok işlemli ilk veritabanı oluşturma ve taşıma işlemlerini korumak amacıyla, FrameworkSQLite* düzeyinde çoklu işlem kilidi ve kullanım için API eklendi. (Ied267, b/193182592)
Hata Düzeltmeleri
- Kotlin kaynaklarındaki dahili mülkler için destek eklendi.
Bu, Oda'da kaynağın kullanılacağı küçük bir davranış değişikliğidir
alıcı/belirleyici olarak özelliklerle eşleştiren işlevlerin adı
(önceden, farklı olan işlevin JVM adını
dahili işlevler/mülkler için).
Alıcıları/belirleyicileri eşleştirmek için özel
@JvmName
ek açıklamaları kullanıyorsanız eklemek istiyorsanız, lütfen güncelleme (If6531, b/205289020)
Sürüm 2.4.3
Sürüm 2.4.3
27 Temmuz 2022
androidx.room:room-*:2.4.3
yayınlandı. Sürüm 2.4.3 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Odanın, Kotlin 1.7'de (b/236612358) askıya alma işlevlerini tanımamasına neden olan bir sorun düzeltildi
Sürüm 2.4.2
Sürüm 2.4.2
23 Şubat 2022
androidx.room:room-*:2.4.2
yayınlandı. Sürüm 2.4.2 bu kaydetmeleri içerir.
Hata Düzeltmeleri
-Xjvm-default=all
veya eşdeğeri derleme nedeniyle varsayılan arayüz yöntemi oluşturan bir gövdeye sahip Dao@Transaction
askıya alma işlevi için kod oluşturma sorununu düzeltin. (Ia4ce5)- Odanın,
Array<ByteArray>
dönüş türü sorgu yöntemi için kod oluşturduğu hata gideriliyor. (If086e, b/213789489)
Sürüm 2.4.1
Sürüm 2.4.1
12 Ocak 2022
androidx.room:room-*:2.4.1
yayınlandı. Sürüm 2.4.1 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Kotlin kaynaklarındaki dahili mülkler için destek eklendi.
Bu, Oda'da kaynağın kullanılacağı küçük bir davranış değişikliğidir
alıcı/belirleyici olarak özelliklerle eşleştiren işlevlerin adı
(önceden, farklı olan işlevin JVM adını
dahili işlevler/mülkler için).
Alıcıları/belirleyicileri eşleştirmek için özel
@JvmName
ek açıklamaları kullanıyorsanız eklemek istiyorsanız, lütfen güncelleme (If6531, b/205289020)
Sürüm 2.4.0
Sürüm 2.4.0
15 Aralık 2021
androidx.room:room-*:2.4.0
yayınlandı. 2.4.0 sürümü bu kaydetmeleri içerir.
2.3.0'dan bu yana önemli değişiklikler
- Otomatik Taşıma İşlemleri: Odada artık, şemalar dışa aktarıldığı sürece taşıma işlemlerinin otomatik olarak oluşturulması için bir API sunulmaktadır. Odanın otomatik taşıma işlemi oluşturması gerektiğini bildirmek için, yeni bir
@Database#autoMigrations
mülkü kullanarak hangi sürümlerden hangilerine otomatik olarak taşıma yapılacağını bildirebilirsiniz. Oda, tablolar ve sütunların yeniden adlandırılması veya silinmesiyle ilgili ek bilgiye ihtiyaç duyduğunda@AutoMigration
ek açıklaması bu tür girişleri içeren bir spesifikasyon sınıfı bildirebilir. Daha fazla bilgi için@AutoMigration
dokümanlarına bakın. - Otomatik Taşıma İşlemlerinde Bağımlılık Ekleme:
@ProvidedAutoMigrationSpec
, çalışma zamanındaRoomDatabase.Builder#addAutoMigrationSpec()
aracılığıyla birAutoMigrationSpec
sağlanacağını beyan eden yeni bir API'dir. Böylece karmaşık bağımlılıklara ihtiyaç duyulduğunda bu tür özellikleri sağlamak için bağımlılık yerleştirme çerçevesi kullanılabilir. - Otomatik Taşıma İşlemleri İçin Taşıma Testi Yardımcısı Desteği: Odanın
MigrationTestHelper
değeri, test altındaki veritabanı sınıfını alan yeni bir oluşturucu API sağlanarak otomatik taşımaları destekleyecek şekilde güncellendi. Bu, yardımcınınrunMigrationsAndValidate
sırasında otomatik taşıma işlemlerini aynı şekilde otomatik olarak eklemesine olanak tanır. - Oda Çağrısı Desteği:
androidx.room:room-paging
aboneliği iptal edildi veandroidx.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ınImmutableMap
,ImmutableSetMultimap
veImmutableListMultimap
.
Sürüm 2.4.0-rc01
1 Aralık 2021
androidx.room:room-*:2.4.0-rc01
yayınlandı. Sürüm 2.4.0-rc01 bu kaydetmeleri içerir.
Yeni Özellikler
- Kotlin 1.6 sürümünü desteklemek için Room'un KSP'ye olan bağımlılığını
1.6.0-1.0.1
olarak güncelleyin
Sürüm 2.4.0-beta02
17 Kasım 2021
androidx.room:room-*:2.4.0-beta02
yayınlandı. Sürüm 2.4.0-beta02 bu kaydetmeleri içerir.
Yeni Özellikler
- @MapInfo'ya SparseArray ve LongSparseArray için destek ekledik. (Ic91a2b/138910317)
Hata Düzeltmeleri
- Null değeri alan yeni bir TypeConverter analiz edici eklendi değerlendirebiliriz. Bu bilgiler yalnızca varsayılan olarak yalnızca KSP'de açıktır. Herhangi bir soruna neden oluyorsa bu adımı uygulayarak Ek açıklama için Room.useNullAwareTypeAnalysis=false işlemci. Bu durumda lütfen bir dosya hatası oluştu, çünkü bu bayrak daha kolay olur. Bu yeni TypeConverter analizciyle, yalnızca Yeni analiz edicinin kendi içinde olduğu gibi, kullanabilirsiniz. Bu durumun, anahtar kelime olarak KAPT veya Java'yı kullanan kullanıcılar üzerinde ek açıklama işlemcilerinde (KSP'nin aksine) boş değer atanabilirlik bilgilerine sahip değildir. farklı türlerde. (Ia88f9, b/193437407)
- Bir FTS varlığının ICU jeton oluşturucuyu kullandığını belirttiğinde Odanın SQL hatasıyla derleme hatasına neden olduğu hatayı düzeltin. (I00db9, b/201753224)
- Sürümler arasında yerleştirilmiş bir varlığa eklenen yeni bir sütunla ilgili otomatik taşıma işlemlerinde sorun çözüldü. (I5fcb1b/193798291)
- LEFT JOIN sorgularındaki ilişkisel sorgu yöntemi döndürme türleriyle ilgili bir sorunu çözdük. Bu değişikliklerle, 1-çok sayıda eşlemenin bulunduğu durumlarda, bir anahtar için döndürülen koleksiyon, imleçte bulunmayan geçersiz değer nesnesini içermeyecektir. Geçerli değer bulunamazsa bir anahtar, boş bir koleksiyona eşlenir. (Id5552b/201946438)
- SQLite anahtar kelimelerinin sütun adlarında kod dışına alınamadığı otomatik taşıma sorunu çözüldü. (Idbed4b/197133152)
Sürüm 2.4.0-beta01
13 Ekim 2021
androidx.room:room-*:2.4.0-beta01
yayınlandı. Sürüm 2.4.0-beta01 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Aynı otomatik taşıma işlemindeki başka bir tabloda aynı ada sahip yeni bir sütun olduğunda, otomatik taşıma işlemlerinde yeni sütun eklenmemesiyle ilgili sorun düzeltildi. (Ia5db5, b/200818663)
- Oda sayfalama tarafından oluşturulan PagingSource uygulaması
RoomDatabase.Builder
üzerinden geçenqueryExecutor
parametresini kullanır, böylece şunları yapabilir: geçersiz kılınır.Dispatchers.IO
(Iae259)
Sürüm 2.4.0-alpha05
29 Eylül 2021
androidx.room:room-*:2.4.0-alpha05
yayınlandı. 2.4.0-alpha05 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- UUID için yerleşik bir tür dönüştürücü eklendi. (I671e8, b/73132006)
API Değişiklikleri
Geliştiricilerin yerleşik Enum ve UUID dönüştürücülerini devre dışı bırakmasına olanak tanımak için TypeConverters ek açıklamasına yeni bir özellik eklendi. Bu dönüştürücüler varsayılan olarak etkindir, ancak belirli bir kapsam veya veritabanının tamamı için devre dışı bırakabilirsiniz. Ayrıntılar için TypeConverters belgelerine bakın. (36ae9e, b/195413406)
@MapInfo
ek açıklaması aracılığıyla DAO'lardaki çoklu eşleme dönüş türleri için POJO olmayan anahtarları/değerleri destekleme. (I4d704)
Haritanın anahtar veya değer sütunu tek bir sütundan olduğunda @MapInfo
gerekir. Örneği inceleyin:
@MapInfo(valueColumn = "songCount")
@Query("""
SELECT *, COUNT(mSongId) as songCount
FROM Artist JOIN Song ON Artist.artistName = Song.artist
GROUP BY artistName
""")
fun getArtistAndSongCounts(): Map<Artist, Integer>
- Paging3'ü Room ile kullanırken
room-paging
öğesini gerekli bir yapı haline getirin. (Ieaffe)
Hata Düzeltmeleri
- Sorgu, harita anahtarındaki bir sütunun ORDER BY ifadesini içerdiğinde, çoklu eşleme sorgularının sonuçlarının doğru sıralanmamasına neden olan sorun düzeltildi. (I6b887)
Harici Katkı
- @Dizin'de dizin sırasını belirtmek üzere yeni API eklendi. Nikita Zhelonkin'e teşekkürler. (I033fc)
Sürüm 2.4.0-alpha04
21 Temmuz 2021
androidx.room:room-*:2.4.0-alpha04
yayınlandı. 2.4.0-alpha04 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
Oda, artık JOIN ifadeleri için kullanışlı olan çoklu eşleme dönüş türleri
@Dao
yöntemlerini destekliyor. Desteklenen çoklu harita türleri şunlardır:Map
ve Guava'nınImmutableMap
,ImmutableSetMultimap
veImmutableListMultimap
.Aşağıda, çoklu eşleme sorgularının örnekleri verilmiştir:
Bire Bir İlişki Haritası
@Query("SELECT * FROM Song JOIN Artist ON Song.artistId = Artist.artistId") fun getSongAndArtist(): Map<Song, Artist>
Bire-Birden Çok İlişki Haritası (Standart çoklu harita)
@Query("SELECT * FROM Artist JOIN Album ON Artist.id = Album.artistId") fun getArtistAndAlbums(): Map<Artist, List<Album>>
Çoklu eşleme sonucu
LiveData
, Rx'inObservable
veya eş yordamlarıFlow
gibi desteklenen eşzamansız dönüş türlerinde de sarmalanabilir.
Oda Çağrısı
androidx.paging.PagingSource
döndüren Oda sorguları için yerel Sayfalandırma 3.0 desteği sağlayanandroidx.room:room-paging
yayınlandı.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun loadUsers(): PagingSource<Int, User> }
Bu yapı, Room tarafından oluşturulan
androidx.paging.PagingSource
uygulamasını, Paging 3.0 API'leri üzerine oluşturulan bir uygulamayla değiştirir. Yeni PagingSource uygulaması anahtarları farklı şekilde ayrıştırır. Bu nedenle, Room'un PagingSource'una manuel olarak sağlanan tüm anahtarların, Sayfa Aracı'nın oluşturucusu aracılığıyla iletilen initialKey de dahil olmak üzere, bu davranış değişikliğini hesaba katması gerekir. SayfalarKey
üzerinden yüklenmeye başlayacak veKey
, ilk yüklenen öğe olacak. Bu,LoadParams.Refresh.Key
öğesinin kullanıcının kaydırma konumu olarak değerlendirildiği ve öğelerin anahtardan önce ve sonra yüklendiği mevcut davranıştan saptır.Yapı isteğe bağlıdır ve devre dışı bırakma işlemi, Oda 2.3'te kullanıma sunulan mevcut Sayfalandırma 3.0 desteğinin yerine geçer. Ancak bu yapı, Sayfa 3.0 ile Oda kullananlar için gelecekteki sürümde isteğe bağlı olmayacak. Etkinleştirmek için yeni oda sayfa oluşturma yapısını sınıf yolunuza ekleyin. Gradle kullanıyorsanız build.gradle dosyanıza aşağıdaki snippet'i ekleyebilirsiniz:
dependency { implementation("androidx.room:room-paging:2.4.0-alpha04") }
Hata Düzeltmeleri
- Otomatik taşıma işlemlerinde yabancı anahtar ihlallerinin ele alınmasıyla ilgili bir sorunu düzeltin. (b/190113935)
Sürüm 2.4.0-alpha03
16 Haziran 2021
androidx.room:room-*:2.4.0-alpha03
yayınlandı. 2.4.0-alpha03 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
- Odanın
MigrationTestHelper
öğesini, test edilen veritabanı sınıfını alacak yeni bir oluşturucu API sağlayarak otomatik taşımaları destekleyecek şekilde güncelleyin. Bu, yardımcınınrunMigrationsAndValidate
sırasında otomatik taşıma işlemlerini aynı şekilde otomatik olarak eklemesine olanak tanır.
Hata Düzeltmeleri
Apple'ın M1 çiplerini desteklemek için Odanın SQLite yerel kitaplığıyla ilgili sorun düzeltildi. (b/174695268
@Transaction işlevinin döndürme türü Akış olduğunda Oda hatasının oluşmaması sorunu düzeltildi (I56ddd, b/190075899)
Otomatik taşıma işlemlerinde dizinlerle ilgili bir sorunu düzeltin. b/177673291
Bağımlılık Güncellemeleri
- Odanın KSP desteği artık KSP'ye (
1.5.10-1.0.0-beta01
) bağlı. (1ecb11, b/160322705)
Sürüm 2.4.0-alpha02
5 Mayıs 2021
androidx.room:room-*:2.4.0-alpha02
yayınlandı. 2.4.0-alpha02 sürümü bu kaydetmeleri içerir.
API Değişiklikleri
@ProvidedAutoMigrationSpec
, çalışma zamanındaRoomDatabase.Builder#addAutoMigrationSpec()
aracılığıylaAutoMigrationSpec
sağlanacağını beyan etmek için kullanılan yeni bir API'dir. Böylece karmaşık bağımlılıklara ihtiyaç duyulduğunda bu tür özellikleri sağlamak için bağımlılık yerleştirme çerçevesi kullanılabilir.
Hata Düzeltmeleri
@DatabaseView
öğelerinin düzgün şekilde yeniden oluşturulamadığı otomatik taşıma işlemleriyle ilgili bir sorun düzeltildi.
Harici Katkı
- Odanın
JournalMode.TRUNCATE
özelliğindeInvalidationTracker
geri çağırmasının bazen geçersiz bir şekilde, çok geç veya hiç çağrılmadığı sorunu düzeltin.Uli Bubenheimer | bubenheimer@users.noreply.github.com
adlı kullanıcıya teşekkür ederiz (b/154040286)
Sürüm 2.4.0-alpha01
21 Nisan 2021
androidx.room:room-*:2.4.0-alpha01
yayınlandı. Sürüm 2.4.0-alpha01 bu kaydetmeleri içerir.
Yeni Özellikler
- Otomatik Taşıma İşlemleri: Odada artık, şemalar dışa aktarıldığı sürece taşıma işlemlerinin otomatik olarak oluşturulması için bir API sunulmaktadır. Odanın otomatik taşıma işlemi oluşturması gerektiğini bildirmek için, yeni bir
@Database#autoMigrations
mülkü kullanarak hangi sürümlerden hangilerine otomatik olarak taşıma yapılacağını bildirebilirsiniz. Oda, tablolar ve sütunların yeniden adlandırılması veya silinmesiyle ilgili ek bilgiye ihtiyaç duyduğunda@AutoMigration
ek açıklaması bu tür girişleri içeren bir spesifikasyon sınıfı bildirebilir. Diğer ayrıntılar için@AutoMigration
belgelerini inceleyin.
Hata Düzeltmeleri
- Ekstra parantez içeren
defaultValue
öğesinin, Oda'nın şema doğrulaması tarafından yanlış şekilde doğrulanmasına neden olan sorunu düzeltin. b/182284899
Sürüm 2.3.0
Sürüm 2.3.0
21 Nisan 2021
androidx.room:room-*:2.3.0
yayınlandı. 2.3.0 sürümü bu kaydetmeleri içerir.
2.2.0'dan bu yana önemli değişiklikler
- Yerleşik Enum Desteği: Oda, artık varsayılan olarak Enum - Dize ve tam tersi bir dönüştürücü (hepsi sağlanmamışsa) kullanacaktır. Bir numaralandırma için tür dönüştürücü zaten varsa Oda, varsayılan türe göre onu kullanmaya öncelik verir.
- Sorgu Geri Çağırması: Oda artık, sorguların yürütülmek üzere olduğu durumlarda kullanılmak üzere genel bir geri çağırma API'si (RoomDatabase.QueryCallback) sunuyor. Bu, hata ayıklama derlemelerine giriş yapmak için yararlı olabilir. Geri çağırma özelliği
RoomDatabase.Builder#setQueryCallback()
aracılığıyla ayarlanabilir. - Önceden Paketlenmiş İyileştirme: Odada artık, giriş akışından okunan önceden paketlenmiş bir veritabanını kullanarak veritabanı oluşturmaya yönelik API'ler bulunmaktadır. Bu, önceden paketlenmiş veritabanının gzip'lenmesi gibi durumlara olanak tanır.
- Sağlanan Tür Dönüştürücüler: Odada artık, uygulamanın başlatma işlemini kontrol edebilmesi için tür dönüştürücü örnekleri sağlamak üzere API'ler bulunmaktadır. Oda'ya sağlanacak bir tür dönüştürücüyü işaretlemek için yeni @ProvidedTypeConverter ek açıklamasını kullanın.
- RxJava3 Desteği: Oda artık RxJava3 türlerini destekliyor. RxJava2'ye benzer şekilde, dönüş türü Akan, Tek, Belki ve Uyumlu olan DAO yöntemlerini bildirebilirsiniz. Ayrıca, RxJava3'ü desteklemek için yeni bir
androidx.room:room-rxjava3
yapısı kullanıma sunulmuştur. - Adım 3.0 Desteği: Oda, artık dönüş türü
androidx.paging.PagingSource
olan ek açıklamalı@Query
yöntem için uygulama oluşturmayı destekleyecek.
Sürüm 2.3.0-rc01
24 Mart 2021
androidx.room:room-*:2.3.0-rc01
yayınlandı. Sürüm 2.3.0-rc01 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Oda tarafından oluşturulan Eşzamanlı Akış sorgularının, askıya alınan bir
withTransaction
blokunda kullanılmasını engelleyen bir sorun düzeltildi. (I797bf)
Sürüm 2.3.0-beta03
10 Mart 2021
androidx.room:room-*:2.3.0-beta03
yayınlandı. Sürüm 2.3.0-beta03 bu kaydetmeleri içerir.
Yeni Özellikler
- KSP için artımlı derleme desteği eklendi. (I031c1, b/176453350)
Hata Düzeltmeleri
- Ana iş parçacığında PagingSource oluşturmanın ANR'yi tetikleyebilmesine neden olan hata düzeltildi. (I42b74, b/181221318)
@ExperimentalRoomApi
görünürlüğü, paket gizli yerine herkese açık olarak ayarlandı. (b/181356119)
Harici Katkı
- Odanın,
@SkipQueryVerification
ek açıklaması da olduğunda@Query
ek açıklamalı DAO yönteminde POJO dönüş türünü kabul etmesine izin verin. Oda,@RawQuery
ek açıklamalı DAO yönteminde olduğu gibi sorgunun sonucunu POJO dönüş türüne dönüştürmek için elinden gelenin en iyisini yapar. "Markus Riegel | hey@marcorei.com" adresini ziyaret edin. (I45acb)
Sürüm 2.3.0-beta02
18 Şubat 2021
androidx.room:room-*:2.3.0-beta02
yayınlandı. Sürüm 2.3.0-beta02 bu kaydetmeleri içerir.
Yeni Özellikler
Odada artık Kotlin Sembolü İşleme KSP için deneysel destek sunulmaktadır.
KSP, KAPT'nin yerine geçerek ek açıklama işlemcilerini Kotlin derleyicide yerel olarak çalıştırarak derleme sürelerini önemli ölçüde kısaltır.
Room'u KSP ile kullanmak için KSP Gradle eklentisini uygulayabilir ve derleme dosyanızdaki
kapt
yapılandırmasınıksp
ile değiştirebilirsiniz. Örneğin,kapt 'androidx.room:room-compiler:2.3.0-beta02'
yerineksp 'androidx.room:room-compiler:2.3.0-beta02'
kullanın. Daha fazla bilgi için KSP belgelerine bakın.KSP deneysel olduğundan, üretim kodu için yine de KAPT kullanmanızın önerildiğini unutmayın. Derleme sürelerinin kısaltılması yalnızca KAPT'yi kullanan başka işlemci yoksa geçerlidir. Bilinen sorunlar için b/160322705 adresine bakın.
Sürüm 2.3.0-beta01
27 Ocak 2021
androidx.room:room-*:2.3.0-beta01
yayınlandı. Sürüm 2.3.0-beta01 bu kaydetmeleri içerir.
Yeni Özellikler
- Otomatik Kapatılabilir Veritabanları: Oda, artık belirli bir süre sonunda erişilmeyen veritabanlarını kapatma olanağına sahiptir. Bu, deneysel bir özelliktir ve
RoomDatabase.Builder#setAutoCloseTimeout()
aranarak etkinleştirilebilir. Bu özellik, birden fazla veritabanı olan uygulamalar için yararlıdır.
Hata Düzeltmeleri
- Farklı çakışma stratejilerine sahip birden fazla
@Update
veya@Delete
yöntemi içeren Dao yöntemlerinin, tanımlanan stratejilerden yalnızca biriyle kod oluşturmasına neden olan sorunu düzeltin. (I0b90d, b/176138543)
Sürüm 2.3.0-alpha04
16 Aralık 2020
androidx.room:room-*:2.3.0-alpha04
yayınlandı. 2.3.0-alpha04 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- Odada artık sorguların yürütülmek üzere olduğu durumlar için
RoomDatabase.QueryCallback
genel geri çağırma API'si sunuluyor. Bu API, hata ayıklama derlemelerine giriş yaparken faydalı olabilir. Geri çağırma özelliğiRoomDatabase.Builder#setQueryCallback()
aracılığıyla ayarlanabilir. (Iaa513, b/174478034, b/74877608) - Oda, artık varsayılan olarak Enum to String ve tersi türde dönüştürücü (hiçbiri sağlanmamışsa) kullanacaktır. Bir numaralandırma için tür dönüştürücü zaten varsa Oda, varsayılan türe göre onu kullanmaya öncelik verir. (b/73132006)
Bilinen Sorun
- Sıralama için okumak üzere tek yönlü bir dönüştürücü zaten varsa Oda, yanlışlıkla yerleşik Dizeden Enum dönüştürücüyü (istenmeyebilir) kullanabilir. Bu bilinen bir sorundur ve iki yönlü dönüştürücü yapılarak giderilebilir. Bkz. b/175707691
Hata Düzeltmeleri
- Odanın yeni JDK sürümlerinde artımlı ek açıklama işlemeyi yanlışlıkla devre dışı bırakmasına neden olan sorun düzeltildi. (b/171387388)
- Birden fazla sınıf yükleyici kullanıldığında Odanın oluşturulan sınıfı bulmasıyla ilgili sorun düzeltildi. "Serendipity | 892449346@qq.com") (b/170141113)
- Bir Kotlin
@Dao
öğesi, JVM'de jenerik öğeleri temel öğeler olan bir temel sınıfa sahip olduğunda Odanın yanlış kod oluşturmasına neden olan sorun düzeltildi. (b/160258066)
Harici Katkı
- WAL modu etkinse ve API 16 veya daha fazlaysa oda artık varsayılan olarak
beginTransactionNonExclusive
kullanılacak. Ahmet I. Halil | ahmedibrahimkhali@gmail.com" (b/126258791)
Sürüm 2.3.0-alpha03
14 Ekim 2020
androidx.room:room-*:2.3.0-alpha03
yayınlandı. 2.3.0-alpha03 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
Odada artık, uygulamanın başlatma işlemini kontrol edebilmesi için tür dönüştürücü örnekleri sağlamak için API'ler bulunuyor. Oda'ya sağlanacak bir tür dönüştürücüyü işaretlemek için yeni
@ProvidedTypeConverter
ek açıklamasını kullanın. "mzgreen yairobbe@gmail.com" hesabına teşekkürler. (Ie4fa5, b/121067210)Odada artık giriş akışından okunan önceden paketlenmiş bir veritabanını kullanarak veritabanı oluşturmak için API'ler bulunuyor. Bu, önceden paketlenmiş veritabanının gzip'lenmesi gibi durumlara olanak tanır. "Ahmed El-Helw ahmedre@gmail.com" hesabına teşekkürler (3e6792, b/146911060)
API Değişiklikleri
@ForeignKey
ek açıklamasına eksik hedef eklendi ve bu hedef,@Entity
ek açıklaması dışında kullanımını engelledi. (Buzlu1e)RoomDatabase.java
içindekimCallbacks
alanı artık gizli. (d576cb, b/76109329)
Hata Düzeltmeleri
TypeConverters’ın yalnızca sütunları / alanları dönüştürmek için kullanılabildiğini, satırları değil de dönüştürüldüğünü açıklığa kavuşturmak için TypeConverters dokümanlarında güncelleme yapın. (I07c56, b/77307836)
Dao'daki derleyici hatasını Kotlin "temel öğeleri" içeren genel bir süper türüyle düzeltmek için DaoProcessor güncellemesi. (Ice6bb, b/160258066)
İleti dizisini netleştirmek için gözlem ekleme/kaldırma yöntemleri dokümanlarını güncelleme (Ifd1d9, b/153948821)
Odanın, satır kimliği sütununu bildiren FTS tablolarını yanlış şekilde doğrulamasıyla ilgili sorunu düzeltin. (d62ebc, b/145858914)
Harici Katkılar
Türkçe (5746e3), b/68159494 ile ilgili büyük/küçük harf yerel ayar sorunlarını düzeltin
Android Lollipop'ta (d1cfc7, b/162431855) sorun yaşamamak için
RoomDatabase
içindekiConcurrentHashMap
bölümünüCollections.synchronizedMap()
ile değiştirinÖnceden paketlenmiş bir durum için onOpenPrepackagedDatabase geri çağırması ekleyin VT kopyalandı. (I1ba74, b/148934423)
Sürüm 2.3.0-alpha02
22 Temmuz 2020
androidx.room:room-*:2.3.0-alpha02
yayınlandı. 2.3.0-alpha02 sürümü bu kaydetmeleri içerir.
Yeni Özellikler
- RxJava3 Desteği: Oda artık RxJava3 türlerini destekliyor. RxJava2'ye benzer şekilde, dönüş türü Akan, Tek, Belki ve Uyumlu olan DAO yöntemlerini bildirebilirsiniz. Ayrıca, RxJava3'ü desteklemek için yeni bir
androidx.room:room-rxjava3
yapısı kullanıma sunulmuştur. (b/152427884)
API Değişiklikleri
- Kotlin Nesne sınıfında
@TypeConverter
tanımlama artık desteklenmektedir. (b/151110764) - Odanın artımlı ek açıklama işleme seçeneği artık varsayılan olarak AÇIK. (b/112110217)
Sürüm 2.3.0-alpha01
10 Haziran 2020
androidx.room:room-*:2.3.0-alpha01
yayınlandı. Sürüm 2.3.0-alpha01 bu kaydetmeleri içerir.
Yeni Özellikler
Adım 3.0 Desteği: Oda, artık dönüş türü
androidx.paging.PagingSource
olan ek açıklamalı@Query
yöntemler için uygulama oluşturmayı destekleyecek.@Dao interface UserDao { @Query("SELECT * FROM users ORDER BY id ASC") fun pagingSource(): PagingSource<Int, User> }
API Değişiklikleri
@RewriteQueriesToDropUnusedColumns
, Odanın bir sorgudaki "*" projeksiyonunu sonuçtaki kullanılmayan sütunları kaldıracak şekilde yeniden yazmasını sağlayan yeni ve kullanışlı bir ek açıklamadır.room.expandProjection
işlemci seçeneği kullanımdan kaldırıldı. Yıldız tahminleriyle oda optimizasyonu yapan sorguların yerine@RewriteQueriesToDropUnusedColumns
kullanın.@RewriteQueriesToDropUnusedColumns
değerinin,@Embedded
alanı içeren döndürme türleriyle ilgili olarak sunulan sütun çakışması çözümününroom.expandProjection
yerine geçmediğini unutmayın.
Hata Düzeltmeleri
- Odanın, artımlı ek açıklama işlemcisini etkinleştirmek için kullanılan JDK sürümünü doğru şekilde algılayamamasına neden olan hata düzeltildi. Blaz Solar (me@blaz.solar) sayesinde (b/155215201)
- Oda, ANTLR kullanan diğer işlemcilerle sürüm çakışmalarını önlemek için artık ANTLR bağımlılığını ek açıklama işlemcisine yerleştiriyor. (b/150106190)
Sürüm 2.2.6
Sürüm 2.2.6
16 Aralık 2020
androidx.room:room-*:2.2.6
yayınlandı. 2.2.6 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Odanın yeni JDK sürümlerinde artımlı ek açıklama işlemeyi yanlışlıkla devre dışı bırakmasına neden olan sorun düzeltildi. (b/171387388)
Sürüm 2.2.5
Sürüm 2.2.5
18 Mart 2020
androidx.room:room-*:2.2.5
yayınlandı. 2.2.5 sürümü bu kaydetmeleri içerir.
Hata Düzeltmeleri
MultiInstanceInvalidationService
Direct BootAware'i seçin. "Mygod contact-git@mygod.be" hesabına teşekkürler (b/148240967)- Birden çok örnek geçersiz kılması etkinleştirildiğinde ve veritabanı bir FTS varlığı içerdiğinde kilitlenmeye neden olan bir hata düzeltildi. (b/148969394)
- Oda ek açıklama işlemcisinde SQLite yerel kitaplıkları yüklenirken, paralel derlemeler nedeniyle derleyicinin kilitlenmesine neden olacak bir sorun düzeltildi. (b/146217083)
Sürüm 2.2.4
Sürüm 2.2.4
19 Şubat 2020
androidx.room:room-common:2.2.4
, androidx.room:room-compiler:2.2.4
, androidx.room:room-guava:2.2.4
, androidx.room:room-ktx:2.2.4
, androidx.room:room-migration:2.2.4
, androidx.room:room-runtime:2.2.4
, androidx.room:room-rxjava2:2.2.4
ve androidx.room:room-testing:2.2.4
yayınlandı. Sürüm 2.2.4 bu kaydetmeleri içerir.
Hata Düzeltmeleri
- Eş yordamın işlem gerçekten başlamadan hemen iptal edilmesi halinde işlemlerin kilitlenmesine neden olacak şekilde askıya alınmasıyla ilgili sorun düzeltildi. (b/148181325)
- JDK 9 ile derleme yaparken @Generated öğesinin yanlış şekilde kullanılmasıyla ilgili sorun düzeltildi. (b/146538330)
- Kotlin'deki bir DAO arayüzünde somut bir işlev olduğunda Odanın yanlış kod oluşturmasına neden olan sorun düzeltildi. (b/146825845)
Sürüm 2.2.3
Sürüm 2.2.3
18 Aralık 2019
androidx.room:room-*:2.2.3
yayınlandı. Sürüm 2.2.3 bu kaydetmeleri içerir.
Hata düzeltmeleri
- Odanın, herhangi bir taşıma işlemine geçmemiş ve şemasında dizinler içeren eski bir karma içeren veritabanını doğrulayamaması sorunu düzeltildi. (b/139306173)
Sürüm 2.2.2
Sürüm 2.2.2
20 Kasım 2019
androidx.room:room-*:2.2.2
yayınlandı. Sürüm 2.2.2 bu kaydetmeleri içerir.
Hata düzeltmeleri
- 999'dan fazla satırla bire bir ilişki toplanmasının, Odanın boş alakalı öğeler döndürmesine neden olmasına neden olan hata düzeltildi. (b/143105450)
Sürüm 2.2.1
Sürüm 2.2.1
23 Ekim 2019
androidx.room:room-*:2.2.1
yayınlandı. Sürüm 2.2.1 bu kaydetmeleri içerir.
Hata düzeltmeleri
- Odanın, derleyici seçeneği
expandProjection
etkinkenCURSOR_MISMATCH
hakkında yanlışlıkla uyarı vermesine neden olan hata düzeltildi. (b/140759491) - Derleme süresi sırasında sorguları doğrulamak için kullanılan eksik yerel kitaplığın işlenmesini sağlayan bir yeniden deneme mekanizması eklendi.
Sürüm 2.2.0
Sürüm 2.2.0
9 Ekim 2019
androidx.room:room-*:2.2.0
yayınlandı. 2.2.0 sürümü bu kaydetmeleri içerir.
2.1.0 sürümünden bu yana önemli değişiklikler
- Önceden Paketlenmiş Veritabanı:
RoomDatabase.Builder
içinde iki yeni API artık kullanımda halihazırda doldurulmuş bir veritabanı verildiğindeRoomDatabase
oluşturmak için kullanılabilir dosyası olarak kaydedebilirsiniz.createFromAsset()
, önceden doldurulmuş veritabanı dosyasının APK'nın öğeler klasörü,createFromFile()
ise dosyanın istediğiniz konuma karar verebilirsiniz. Bu API'lerin kullanımı, yıkıcı taşıma işlemleri gerçekleştirilebilir. Böyle bir yedek taşıma sırasında Oda, yeniden kopyalamak için bir istek oluşturun. Aksi takdirde tabloları yeniden oluşturuyoruz. b/62185732 - Şema Varsayılan Değerleri:
@ColumnInfo
artık yeni birdefaultValue
mülküne sahip bir sütunun varsayılan değerini belirtmek için kullanılabilir. Varsayılan değerler: bir veri tabanı şeması örneğidir ve taşıma sırasında doğrulanacaksa belirtiliyor. b/64088772 - Birden Çoka Çok İlişki:
@Relation
artık yeni birassociateBy
mülküne sahip. içeren yeni bir ek açıklama içeren@Junction
, bir bağlantı tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gerekir. b/69201917 - Bire Bir İlişkiler:
@Relation
artıkList
veyaSet
türünde olacak şekilde kaldırıldı Tek değerli ilişkilerin temsil edilmesine imkan tanır. b/62905145 - Hedef Varlık: DAO ek açıklamaları
@Insert
,@Update
ve@Delete
artık mevcut yeni birtargetEntity
mülkü içeriyor. Bu mülk, DAO yönteminin amacı işlem yapmaya yöneliktir. Böylece, söz konusu DAO'nun parametreleri yöntemler, kısmi varlıklar olarak yorumlanacak şekilde rastgele POJO'lar olmamalıdır. Pratikte bu, kısmi ekleme, silme ve güncelleme işlemlerine olanak tanır. b/127549506 - Koordinat Akışı:
@Query
DAO yöntemleri artıkFlow<T>
dönüş türünde olabilir. Gözlemlenen tablolar sorgu geçersiz kılınır.Channel<T>
dönüşüyle DAO işlevi tanımlama type bir hatadır. Oda, bunun yerineFlow
ve ardındanFlow
öğesiniChannel
biçimine dönüştürmek için komşu fonksiyonlar kullanın. b/130428884 - Gradle Artımlı Ek Açıklama İşleyici: Oda artık Gradle'dan izole ediliyor
ek açıklama işlemcisi ve artımlılık, işlemci aracılığıyla etkinleştirilebilir.
room.incremental
. seçenek Görüntüleyin Oda Derleyici Seçenekleri konulu videomuzu izleyin. Herhangi bir sorunla karşılaşırsanız lütfen burada bulabilirsiniz. Gelecekteki kararlı bir sürümde artırılabilirliği varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217 - Genişleyen Projeksiyonlar: Yeni bir deneysel derleyici seçeneği
Odanın sorguyu yeniden yazmasına neden olan
room.expandProjection
eklendi POJO döndüren türündeki sütunları içerecek şekilde bir yıldız projeksiyonu oluşturun. Örneğin, örnek olarak,@Query("SELECT * FROM Song")
ve POJO,SongIdAndTitle
adlı yeri yalnızca iki alanla adlandırdı. Ardından Oda, yeniden yazarakSELECT id, title FROM Song
değerine ayarlayın, böylece minimum sütun kümesi getirildiğinden emin olun. Bu işlem temel olarak, Sorgu fazladan döndürdüğünde gösterilenCURSOR_MISMATCH
uyarı döndürülen POJO türündeki herhangi bir alanla eşleşmeyen sütunlar.
Sürüm 2.2.0-rc01
5 Eylül 2019
androidx.room:room:2.2.0-rc01
yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
2.2.0-beta01
adlı odadan bu yana herkese açık değişiklik yok.
Sürüm 2.2.0-beta01
22 Ağustos 2019
androidx.room:room-*:2.2.0-beta01
yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Hata düzeltmeleri
- Eş yordam akışı sorgusunun belirli bir süre sonra yeni değerler göndermeyi durdurmasına neden olan hata düzeltildi. (b/139175786)
- Odanın, Oda 1.0'dan bu yana taşınmayan bir veritabanını açarken eski şema karma kodunu kabul etmemesi ve geçersiz şema nedeniyle çalışma zamanı kilitlenmesine neden olan hata düzeltildi. (b/139306173)
Sürüm 2.2.0-alpha02
7 Ağustos 2019
androidx.room:room-*:2.2.0-alpha02
yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Yeni Özellikler
- Koordinat Akışı:
@Query
DAO yöntemleri artıkFlow<T>
dönüş türünde olabilir. Gözlemlenen tablolar sorgu geçersiz kılınır.Channel<T>
dönüşüyle DAO işlevi tanımlama type bir hatadır. Oda, bunun yerineFlow
ve ardındanFlow
öğesiniChannel
biçimine dönüştürmek için komşu fonksiyonlar kullanın. b/130428884 - Genişleyen Projeksiyonlar: Yeni bir deneysel derleyici seçeneği
Odanın sorguyu yeniden yazmasına neden olan
room.expandProjection
eklendi POJO döndüren türündeki sütunları içerecek şekilde bir yıldız projeksiyonu oluşturun. Örneğin, örnek olarak,@Query("SELECT * FROM Song")
ve POJO,SongIdAndTitle
adlı yeri yalnızca iki alanla adlandırdı. Ardından Oda, yeniden yazarakSELECT id, title FROM Song
değerine ayarlayın, böylece minimum sütun kümesi getirildiğinden emin olun. Bu işlem temel olarak, Sorgu fazladan döndürdüğünde gösterilenCURSOR_MISMATCH
uyarı döndürülen POJO türündeki herhangi bir alanla eşleşmeyen sütunlar. onDestructiveMigrate
,RoomDatabase.Callback
API'sine eklenen yeni bir geri çağırma API'sidir. Bu işlem, Odanın bir veritabanını yok edici bir şekilde taşıdığı durumlar için geçerlidir. b/79962330
Hata Düzeltmeleri
- Odanın, alan olarak bir yöntem kullanarak yanlış kod oluşturmasına neden olan hata düzeltildi. ayarlayıcı olarak tanımlar. b/136194628
- InvalidationTracker'ın saniye içinde NPE bildirmesine neden olan bir hata düzeltildi çok örnek geçersiz kılması etkinleştirildiğinde ve geçersiz kılma işleminin Hizmet sonlandırıldı. b/137454915
- Odanın döndürme türünü doğru şekilde tanımlamamasına neden olan hata düzeltildi.
@RawQuery
ek açıklamasıyla birlikte devralınan askıya alma işlevi. b/137878827 - İlgili anahtar türde olduğunda
@Relation
için oluşturulan kod güncellendi BLOB ile karşılaştırılabilir birByteBuffer
kullanmak için. b/137881998 - Room'da, şu şekilde kullanılan POJO'larda kayıp seter'dan şikayetçi olan bir hata düzeltildi.
@Insert
,@Update
ve@Delete
kısmi varlık parametreleri. b/138664463 - Odanın kayıp alıcılardan ve seter'lar
belirli DAO'da varlık sınıfı kullanıldığında
@Entity
aracılığıyla yoksayılan sütun yöntemlerine göz atın. b/138238182 - Odanın adlandırılmış bağlama bağımsız değişkenlerini tekrar kullanılan bir parametredir. b/137254857
Sürüm 2.2.0-alpha01
10 Temmuz 2019
Yeni Özellikler
- Önceden Paketlenmiş Veritabanı:
RoomDatabase.Builder
içinde iki yeni API artık kullanımda halihazırda doldurulmuş bir veritabanı verildiğindeRoomDatabase
oluşturmak için kullanılabilir dosyası olarak kaydedebilirsiniz.createFromAsset()
, önceden doldurulmuş veritabanı dosyasının APK'nın öğeler klasörü,createFromFile()
ise dosyanın istediğiniz konuma karar verebilirsiniz. Bu API'lerin kullanımı, yıkıcı taşıma işlemleri gerçekleştirilebilir. Böyle bir yedek taşıma sırasında Oda, yeniden kopyalamak için bir istek oluşturun. Aksi takdirde tabloları yeniden oluşturuyoruz. b/62185732 - Şema Varsayılan Değerleri:
@ColumnInfo
artık yeni birdefaultValue
mülküne sahip bir sütunun varsayılan değerini belirtmek için kullanılabilir. Varsayılan değerler: bir veri tabanı şeması örneğidir ve taşıma sırasında doğrulanacaksa belirtiliyor. b/64088772Not: Veritabanı şemanızda zaten varsayılan ayar varsa ve
ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z
aracılığıyla eklenenler gibi varsayılan değerleri@ColumnInfo
aracılığıyla bir taşıma işlemi gerçekleştirmeniz gerekebilir. hesaba katılmayan varsayılan değerlere sahiptir. Görüntüleyin Oda Taşıma İşlemleri konulu videomuzu izleyin. - Birden Çoka Çok İlişki:
@Relation
artık yeni birassociateBy
mülküne sahip. içeren yeni bir ek açıklama içeren@Junction
, bir bağlantı tablosu (birleştirme tablosu olarak da bilinir) aracılığıyla karşılanması gerekir. b/69201917 - Bire Bir İlişkiler:
@Relation
artıkList
veyaSet
türünde olacak şekilde kaldırıldı Tek değerli ilişkilerin temsil edilmesine imkan tanır. b/62905145 - Hedef Varlık: DAO ek açıklamaları
@Insert
,@Update
ve@Delete
artık mevcut yeni birtargetEntity
mülkü içeriyor. Bu mülk, DAO yönteminin amacı işlem yapmaya yöneliktir. Böylece, söz konusu DAO'nun parametreleri yöntemler, kısmi varlıklar olarak yorumlanacak şekilde rastgele POJO'lar olmamalıdır. Pratikte bu, kısmi ekleme, silme ve güncelleme işlemlerine olanak tanır. b/127549506 - Gradle Artımlı Ek Açıklama İşleyici: Oda artık Gradle'dan izole ediliyor
ek açıklama işlemcisi ve artımlılık, işlemci aracılığıyla etkinleştirilebilir.
room.incremental
. seçenek Görüntüleyin Oda Derleyici Seçenekleri konulu videomuzu izleyin. Herhangi bir sorunla karşılaşırsanız lütfen burada bulabilirsiniz. Gelecekteki kararlı bir sürümde artırılabilirliği varsayılan olarak etkinleştirmeyi planlıyoruz. b/112110217
Hata Düzeltmeleri
- Oda,
EmptySetResultException
öğesini artık daha önce bir sorgunun Rx akışı kaldırıldığında genel hata işleyici sorgu tamamlandı. b/130257475 - Askıya alma işlemi yapıldığında Odada yanlış hata mesajı gösterilmesine neden olan hata düzeltildi
@RawQuery
ek açıklamasına sahip DAO işlevinin bir dönüş türü yoktu. b/134303897 - Oda, artık ham türlerle DAO bağdaştırıcıları oluşturmayacak. b/135747255
Sürüm 2.1.0
Sürüm 2.1.0
13 Haziran 2019
2.1.0-rc01
adlı binada herhangi bir değişiklik yapılmadan 2.1.0 odası iptal edildi. Sürümde yer alan taahhütlere buradan ulaşabilirsiniz.
2.0.0'dan bu yana önemli değişiklikler
- FTS: Oda artık eşleme içeren varlıkları destekliyor
FTS3 veya FTS4 tablosu. Not:
@Entity
öğesine artık@Fts3
veya@Fts4
ile ek açıklama eklenebilir. eşleme tam metin arama tablosu olan bir sınıf. Daha fazlası için FTS seçenekleri ek açıklama yöntemleriyle kullanılabilir. - Görünümler: Oda artık bir sınıfın depolanan sorgu olarak tanımlanmasını destekliyor.
görünüm olarak kullanarak
@DatabaseView
ek açıklaması. - Ders içerikleri: DAO yöntemleri artık askıya alma işlevleri olabilir.
room-ktx
öğesini dahil et bu işlevden yararlanmak için bağımlılıklarınızı belirtmeniz gerekir. ktx yapısı , aynı zamandaRoomDatabase.withTransaction
için bir eş yordam içinde veritabanı işlemleri gerçekleştirme. - Otomatik Değer: Oda artık belirtmeyi destekliyor
Otomatik Değer
ek açıklamalı sınıflara varlık ve POJO'lar olarak eklenir. Oda ek açıklamaları
@PrimaryKey
,@ColumnInfo
,@Embedded
ve@Relation
artık otomatik olarak tanımlanabilir değer ek açıklamalı sınıfın soyut yöntemlerini kullanır. Bu ek açıklamanın Odanın doğru bir şekilde anlaması için@CopyAnnotations
buna eşlik etmelidir. - Ek Eşzamansız Destek:
@Insert
,@Delete
ek açıklamalı DAO yöntemleri veya@Update
;INSERT
,DELETE
veyaUPDATE
içeren@Query
ile birlikte ifadeleri, artıkCompletable
,Single
,Maybe
ve Rx iade türlerini destekliyor. ve Guava'nın dönüş türüListenableFuture
. Ayrıca askıya alınabilirler. işlevlerine dahildir. enableMultiInstanceInvalidation
,RoomDatabase.Builder
ürününde şu amaçlarla kullanılan yeni bir API'dir: aynı kullanılarak birden fazla RoomDatabase örneğinde geçersiz kılmayı etkinleştir veritabanı dosyası olarak kullanabilirsiniz.fallbackToDestructiveMigrationOnDowngrade
, şurada yeni bir API'dir: Eski sürüme geçilirse veritabanını otomatik olarak yeniden oluşturmak içinRoomDatabase.Builder
yaşanır.ignoredColumns
,@Entity
ek açıklamasındaki yeni bir API'dir. yoksayılan alanları ada göre listeleyin.- Oda, artık veri sınıflarında Kotlin'in birincil oluşturucusunu düzgün bir şekilde kullanacaktır
Böylece tesisleri
vars
olarak tanımlamak zorunda kalmazsınız.
Sürüm 2.1.0-rc01
29 Mayıs 2019
Hata Düzeltmeleri
- Halihazırda kurulum aşamasından dolayı oluşabilecek Oda başlatma hatası düzeltildi temp_store yapılandırması. b/132602198
- SQLite 3.27.0 ve sonraki sürümlere sahip kullanıcılar için çift tırnak işareti kullanım uyarısı düzeltildi. b/131712640
- Birden fazla Buna paralel olarak geçersiz kılma kontrolleri de yapılır. b/133457594
Sürüm 2.1.0-beta01
7 Mayıs 2019
androidx.room 2.1.0-beta01
, 2.1.0-alpha07 arasında herhangi bir değişiklik yapılmadan yayınlandı. Bu sürümdeki kaydetmelere buradan ulaşabilirsiniz.
Sürüm 2.1.0-alpha07
25 Nisan 2019
API / Davranış Değişiklikleri
RoomDatabase.withTransaction
uzantı işlevi şu şekilde değiştirildi: artık alıcı olarakCoroutineScope
olan bir işlev bloğu almıyor. Bu, ekcoroutineScope { }
sarmalayıcısının atlanmasını önler işlem bloğundaki öğeleri eş zamanlı olarak çalıştırmak için gereklidir.
Hata Düzeltmeleri
- Odanın, Kotlin DAO için TypeConverter dosyasıyla eşleşmemesine neden olan hata düzeltildi işlevi (Koleksiyon türü parametresi) içerir. b/122066791
Sürüm 2.1.0-alpha06
22 Mart 2019
API / Davranış Değişiklikleri
- Eşzamansız işlem sorguları artık Odanın işlem yapmayacağı şekilde serileştirildi.
Veritabanı işlemlerini yürütmek için birden fazla iş parçacığı.
İzin vermek için
RoomDatabase.Builder.setTransactionExecutor(Executor)
eklendi yürütücüyü, işlemler için kullanılacak şekilde yapılandırmalısınız. RoomDatabase.runInTransaction(Callable)
artık işaretli değil istisnaları RuntimeExceptions'a devre dışı bırakılır. b/128623748
Hata Düzeltmeleri
- Geçersiz kılma izleyicinin içeriği gözlemlemeyi durdurmasına neden olan hata düzeltildi hem içerik tablosu hem de harici içerik için gözlemciler FTS tablosuysa tablo eklendi. b/128508917
- Odanın SQLite dil bilgisi, SQLite 3.24.0 ile eşleşecek şekilde güncellendi. b/110883668
Sürüm 2.1.0-alpha05
13 Mart 2019
Yeni Özellikler
RoomDatabase.withTransaction
uzantı işlevi, veritabanı işlemlerini bir eş yordam içinde güvenli bir şekilde gerçekleştirmenize olanak tanır.room-ktx
yapısında oda uzantısı işlevleri ve eş yordam desteği mevcuttur.@Transaction
ile açıklama eklenen soyut olmayan DAO yöntemleri artık askıya alma işlevleri olabilir. b/120241587
API / Davranış Değişiklikleri
room-coroutines
yapısı, diğer androidx yapılarıyla aynı ada sahip olacak şekilderoom-ktx
olarak yeniden adlandırıldı.RoomDatabase
bölgesindekibeginTransaction
,setTransactionSuccessful
veendTransaction
desteği sonlandırılarakrunInTransaction
veroom-ktx
uzantı işleviwithTransaction
kullanılmaya başlandı.
Hata Düzeltmeleri
- Kullanılan jeton oluşturucu SIMPLE ise jeton oluşturucu bağımsız değişkenlerinin bırakılmasına neden olan hata düzeltildi. b/125427014
- Odanın, iç sınıf olan parametrelere sahip askıya alma işlevlerini doğru şekilde tanımlayamamasına neden olan hata düzeltildi. b/123767877
INSERT
,UPDATE
veyaDELETE
ifadelerine sahip ertelenen@Query
DAO yönteminin, sorguyu ana iş parçacığında istekli bir şekilde hazırlamasına neden olan hata düzeltildi. b/123695593- Odanın belirli askıya alma işlevleri için yanlış kod oluşturmasına neden olan çeşitli hatalar düzeltildi. b/123466702 ve b/123457323
- Kullanımdan kaldırılan yöntem kullanımının, oluşturulan kodda doğru şekilde gösterilmemesine neden olan hata düzeltildi. b/117602586
- androidx.sqlite öğesinin Oda bağımlılığı 1.0.2 olarak güncellendi. Yeni sürümle birlikte, bozuk veritabanlarını doğru şekilde işlemeye yönelik düzeltmeler yapıldı. b/124476912
Bilinen Sorunlar
- Oda 2.1.0-alpha05, şu anda Maven Central'da (KT-27991) bulunmayan
kotlinx-metadata-jvm
yapısına bağlıdır. Bu bağımlılık, proje depolarınızamaven { url "https://kotlin.bintray.com/kotlinx/" }
ekleyerek çözülebilir.
Sürüm 2.1.0-alpha04
25 Ocak 2019
Yeni Özellikler
INSERT
,UPDATE
veyaDELETE
ifadeleri içeren@Query
ek açıklamasıyla birlikte DAO yöntemleri artıkSingle
,Mayble
,Completable
veListenableFuture
eşzamansız türlerini döndürebiliyor. Buna ek olarak, askıya alma işlevleri de olabilirler. b/120227284
API / Davranış Değişiklikleri
@Transaction
ile not eklenmiş soyut olmayan bir DAO yöntemiSingle
,Mayble
,Completable
,LiveData
veyaListenableFuture
gibi eşzamansız bir tür döndürürse oda artık bir hata verir. İşlemler iş parçacığıyla sınırlı olduğundan şu anda Odanın, farklı ileti dizilerinde sorgular gerçekleştirebilecek bir işlevle ilgili işlem başlatması ve sonlandırması mümkün değildir. b/120109336OnConflictStrategy.FAIL
veOnConflictStrategy.ROLLBACK
, Android'in mevcut SQLite bağlamalarıyla amaçlandığı gibi davranmadığı için@Deprecated
. b/117266738
Hata Düzeltmeleri
- DAO yöntemi bir askıya alma işlevi olduğunda Room'un bir dönüş türünün TypeConverter öğesini doğru şekilde kullanmamasına neden olan hata düzeltildi. b/122988159
- Odanın devralınan askıya alma işlevlerini yanlışlıkla askıya alma işlemi olarak tanımlamasına neden olan hata düzeltildi. b/122902595
@Embedded
alanı bir üst sınıfta ve birden fazla alt sınıfta kullanıldığında Odanın yanlış kod oluşturmasına neden olan hata düzeltildi. b/121099048beginTransaction()
ileendTransaction()
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 FTStokenizer
artık Enum yerine Dize alıyor. Bu, özel tokenleştiricilerin Room tarafından kullanılmasına olanak tanır. Yerleşik jeton oluşturucuları,FtsOptions
öğesinde dize sabitleri olarak tanımlanmaya devam ediyor. b/119234881
Yeni Özellikler
- Ders içerikleri: DAO yöntemleri artık askıya alma işlevleri olabilir. Odada askıya alma işlevlerini desteklemek için
room-coroutines
adlı yeni bir yapı yayınlandı. b/69474692 @Insert
,@Delete
veya@Update
ek açıklamalarıyla eklenen DAO yöntemlerinde artık dönüş türü olarakListenableFuture
desteklemektedir. b/119418331
Hata Düzeltmeleri
- Odanın yanlışlıkla
@Entity
öğesininignoredColumns
özelliğinde sütunlara sahip bir oluşturucu bulmaya çalışmasına neden olan hata düzeltildi. b/119830714 - Odanın, DAO yöntemi parametrelerini oluşturulan uygulamada nihai olarak işaretlememesine neden olan hata düzeltildi. b/118015483
- Özel simgeler içeren bir sorguda hata bildirirken Oda işlemcisinin kilitlenmesine neden olan hata düzeltildi. b/119520136
- Odanın,
IN
ifadesinin bağımsız değişkenleri olarak diğer çeşitliCollection
uygulamalarını reddetmesine neden olan hata düzeltildi. b/119884035 - Odadan döndürülen LiveData'nın sonsuza kadar gözlemlendiğinde atık toplanması ve bu nedenle artık yeni veri yayınlamamasına yol açan hata düzeltildi. b/74477406
- Kilit anlaşmazlığını azaltmak için
RoomDatabase
özelliğinin kapatma kilidi güncellendi. b/117900450
Sürüm 2.1.0-alpha02
30 Ekim 2018
Yeni Özellikler
@Relation
içindeki bir@DatabaseView
öğesine referans verme desteği eklendi. b/117680932
Hata Düzeltmeleri
- Odanın, bir Rx dönüş türüne abone olurken ve bu türü atarken ana iş parçacığında disk G/Ç işlemi gerçekleştirmesine neden olan hata düzeltildi. b/117201279
- Odanın, Kotlin varlık sınıfındaki bir alan için uygun tür bir dönüştürücü bulamamasına neden olan hata düzeltildi. b/111404868
- Odanın, bağımsız değişkeni olmayan bir Kotlin varsayılan yöntemi içeren
DAO
arayüzü uygulaması için yanlış kod oluşturmasına neden olan hata düzeltildi. b/117527454 - Odanın SQLite dil bilgisi ayrıştırıcısı güncellendi ve uzun derleme sürelerine neden olabilecek bir performans sorunu düzeltildi. b/117401230
Sürüm 2.1.0-alpha01
8 Ekim 2018
Yeni Özellikler
- FTS: Oda, artık FTS3 veya FTS4 eşleme tablosuna sahip varlıkları destekliyor.
@Entity
ile not eklenen sınıflara artık eşleme tam metin arama tablosu içeren bir sınıfı bildirmek için@Fts3
veya@Fts4
ile ek açıklama eklenebilir. Daha fazla özelleştirme için FTS seçenekleri, ek açıklama yöntemleriyle kullanılabilir. b/62356416 - Görünümler: Oda artık bir sınıfın depolanmış sorgu olarak (@DatabaseView ek açıklaması kullanılarak görünüm) tanımlanmasını destekliyor. b/67033276
- Otomatik değer: Oda, AutoValue ek açıklamalı sınıfların varlık ve POJO olarak tanımlanmasını destekliyor.
@PrimaryKey
,@ColumnInfo
,@Embedded
ve@Relation
oda ek açıklamaları artık otomatik değer ek açıklaması olan sınıfın soyut yöntemlerinde tanımlanabilir. Odanın doğru bir şekilde anlayabilmesi için bu ek açıklamayla birlikte@CopyAnnotations
öğesinin de eklenmesi gerektiğini unutmayın. b/62408420 - Ek Rx Dönüş Türleri Desteği:
@Insert
,@Delete
veya@Update
ile ek açıklamalı DAO yöntemleri, artıkCompletable
,Single<T>
veMaybe<T>
Rx dönüş türlerini desteklemektedir. b/63317956 @Relation
İçeren Sabit Türler: Odada, daha önce@Relation
ek açıklamalı alanın ayarlanabilir olması gerekiyordu ancak artık kurucu parametreler olabilirler.enableMultiInstanceInvalidation
:RoomDatabase.Builder
ürününde aynı veritabanı dosyası kullanılarak birden fazla RoomDatabase örneğinde geçersiz kılma işlemi yapılmasını sağlayan yeni bir API'dir. Bu çok örnekli geçersiz kılma mekanizması, birden fazla işlemde de çalışır. b/62334005fallbackToDestructiveMigrationOnDowngrade
:RoomDatabase.Builder
ürününde, eski sürüme geçilmesi durumunda veritabanını otomatik olarak yeniden oluşturan yeni bir API'dir. b/110416954ignoredColumns
:@Entity
ek açıklamasında, yoksayılan alanları ada göre listelemek için kullanılabilen yeni bir API'dir. Bir varlıktaki devralınan alanları yoksaymak için kullanışlıdır. b/63522075
API / Davranış Değişiklikleri
RoomDatabase
kapsamındakimCallback
vemDatabase
artık@Deprecated
ve Odanın bir sonraki ana sürümünde kaldırılacak. b/76109329
Hata Düzeltmeleri
- Odanın bozuk bir veritabanından düzgün şekilde kurtarılamamasına veya başlatma sırasında hatalı bir taşıma işlemine neden olan iki sorun düzeltildi. b/111504749 ve b/111519144
- Oda, veri sınıflarında Kotlin'in birincil oluşturucusunu düzgün şekilde kullanır. Böylece, alanları
vars
olarak belirtme ihtiyacı ortadan kalkar. b/105769985
Sürüm 2.0.0
Sürüm 2.0.0
1 Ekim 2018
androidx.room 2.0.0
, 2.0.0-rc01 arasında herhangi bir değişiklik yapılmadan yayınlandı.
Sürüm 2.0.0-rc01
20 Eylül 2018
androidx.room 2.0.0-rc01
, 2.0.0-beta01 sürümünde herhangi bir değişiklik yapılmadan yayınlandı.
Sürüm 2.0.0-beta01
2 Temmuz 2018
API / Davranış Değişiklikleri
- Sorguların çalıştırıldığı yerin özelleştirilmesine olanak tanımak için
RoomDatabase.Builder.setQueryExecutor()
eklendi - RxJava2
Observable
desteği eklendi - Oluşturulan DAO ve Veritabanı uygulamaları artık nihai
Hata Düzeltmeleri
- "Alan için alıcı bulunamıyor" bölümünde sınıf/alan adını belirtin hata b/73334503
- RoomOpenHelper'ın, Oda b/110197391'in eski sürümleriyle geriye dönük uyumluluğu düzeltildi
AndroidX Öncesi Bağımlılıkları
Room'un AndroidX öncesi sürümleri için şu bağımlılıkları ekleyin:
dependencies {
def room_version = "1.1.1"
implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor
// optional - RxJava support for Room
implementation "android.arch.persistence.room:rxjava2:$room_version"
// optional - Guava support for Room, including Optional and ListenableFuture
implementation "android.arch.persistence.room:guava:$room_version"
// Test helpers
testImplementation "android.arch.persistence.room:testing:$room_version"
}
Sürüm 1.1.1
Sürüm 1.1.1
19 Haziran 2018
1.1.1
adlı oda, 1.1.1-rc1
adlı Oda ile aynı.
Sürüm 1.1.1-rc1
16 Mayıs 2018
Son derece
taşıma işlemini kullanıyorsanız 1.1.0
yerine 1.1.1-rc1
Odasının kullanılmasını öneririz.
Odanın, taşıma sonrası başlatma işlemini düzgün şekilde yapmamasına neden olan hata düzeltildi b/79362399
Sürüm 1.1.0
Sürüm 1.1.0-beta3
19 Nisan 2018
Hata Düzeltmeleri
- Kotlin POJO, şuna sahip bir ilişki varlığına referans verdiğinde derleme hatasını düzeltin: Java'da b/78199923'te tanımlandı
Sürüm 1.1.0-beta2
5 Nisan 2018
Hata Düzeltmeleri
Room'un Rx
Single
veMaybe
uygulamalarında sorguyu önceden geri dönüştürür ve gözlemciyi, döndürülenSingle
veyaMaybe
değerleriyle ilişkilendirebilirsiniz. b/76031240[RoomDatabase.clearAllTables][ref-clearAllTables], çağrılması durumunda veritabanına
VACUUM
işlemi uygulamaz olabilir. b/77235565
Sürüm 1.1.0-beta1
21 Mart 2018
API Değişiklikleri
- API İncelemesi geri bildirimine dayanarak
@RawQuery
artık sorgu parametresi olarakString
iletmeyi kabul etmiyor. [SupportSQLiteQuery][ref-SupportSQLiteQuery] kullanmanız gerekir. (Bağımsız değişken desteğiyle [SupportSQLiteQuery][ref-SupportSQLiteQuery] örneğini kolayca oluşturmak için [SimpleSQLiteQuery][ref-SimpleSQLiteQuery]'ye bakın.) - RoomDatabase.Builder'ın [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] yöntemi,
vararg Integer
yerinevararg int
yöntemini kabul ediyor.
Hata Düzeltmeleri
- [RoomDatabase.clearAllTables][ref-clearAllTables] artık bir WAL kontrol noktası ayarlayıp
VACUUM
veritabanını kullanarak işletim sistemine geri alan döndürmeye çalışır. - [
@RawQuery
][ref-RawQuery],Embedded
alanları veyaRelation
'leri aracılığıyla bir veya daha fazla varlığa referans verdiği sürece artıkobservedEntities
mülkü için tüm Pojo'ları kabul ediyor. b/74041772 - Sayfalandırma: Odanın DataSource uygulaması artık birden çok tablo içeren bağımlılıkları (ilişkiler ve birleştirmeler gibi) doğru şekilde işliyor. Daha önce bunlar yeni sonuçları tetikleyemiyor veya derlenemiyordu. b/74128314
Sürüm 1.1.0-alpha1
22 Ocak 2018
Yeni Özellikler
RawQuery
: Bu yeni API,@Dao
yöntemlerinin SQL'i sorgu parametresi olarak almasına olanak tanır b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
:RoomDatabase.Builder
ürünündeki bu yeni API şunlara olanak tanır: Hangi şema sürümlerindeki yıkıcı taşıma işlemlerinin başlatılacağı konusunda daha ayrıntılı kontrol izin verilir (fallbackToDestructiveMigration ile karşılaştırıldığında) b/64989640- Oda artık yalnızca daha yeni Paging API'lerini (alfa-4+) destekliyor.
LivePagedListProvider
Yeni Oda alfa sürümünü kullanmak için sayfalama özelliğini kullanmanız gerekiralpha-4
veya daha yüksek ve henüz yapmadıysanızLivePagedListProvider
değerindenLivePagedListBuilder
değerine geçiş yapın.
Hata Düzeltmeleri
- Kotlin Kapt türleri için iyileştirilmiş destek. b/69164099
- Alanların sırası artık şemayı geçersiz kılmaz. b/64290754