रूम

रूम परसिस्टेंस लाइब्रेरी, SQLite को लेकर एक ऐब्स्ट्रैक्शन लेयर उपलब्ध कराती है, ताकि डेटाबेस को ज़्यादा अच्छे से ऐक्सेस किया जा सके. साथ ही, SQLite की सभी सुविधाओं का फ़ायदा भी लिया जा सके.
नया अपडेट रिलीज़ किया गया जांचा और परखा हुआ वर्शन रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
30 अक्टूबर, 2024 2.6.1 - - 2.7.0-alpha11

डिपेंडेंसी का एलान करना

Room पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.

Room के लिए डिपेंडेंसी में, Room माइग्रेशन की जांच और Room RxJava शामिल हैं

अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:

ग्रूवी

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 प्लग इन का इस्तेमाल करने के बारे में जानकारी के लिए, KAPT दस्तावेज़ देखें.

KSP प्लग इन का इस्तेमाल करने के बारे में जानकारी के लिए, KSP क्विक-स्टार्ट दस्तावेज़ देखें.

Kotlin एक्सटेंशन इस्तेमाल करने के बारे में जानकारी के लिए, ktx दस्तावेज़ देखें.

डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.

इसके अलावा, Android के अलावा अन्य लाइब्रेरी (जैसे, Java या Kotlin सिर्फ़ Gradle मॉड्यूल) के लिए, रूम एनोटेशन का इस्तेमाल करने के लिए androidx.room:room-common पर निर्भर किया जा सकता है.

कंपाइलर के विकल्पों को कॉन्फ़िगर करना

Room में एनोटेशन प्रोसेसर के ये विकल्प उपलब्ध हैं.

room.schemaLocation directory
इससे, दी गई डायरेक्ट्री में डेटाबेस स्कीमा को JSON फ़ाइलों में एक्सपोर्ट किया जा सकता है. ज़्यादा जानकारी के लिए, रूम को माइग्रेट करना देखें.
room.incremental boolean
Gradle इंक्रीमेंटल एनोटेशन प्रोसेसर को चालू करता है. डिफ़ॉल्ट वैल्यू true है.
room.generateKotlin boolean
Java के बजाय Kotlin सोर्स फ़ाइलें जनरेट करें. इसके लिए, केएसपी की ज़रूरत होती है. डिफ़ॉल्ट मान false है. ज़्यादा जानकारी के लिए वर्शन 2.6.0 के नोट देखें.

Room Gradle प्लग-इन का इस्तेमाल करना

रूम के वर्शन 2.6.0 और उसके बाद वाले वर्शन के साथ, रूम कंपाइलर के विकल्प कॉन्फ़िगर करने के लिए, रूम ग्रेडल प्लगिन का इस्तेमाल किया जा सकता है. प्लग इन, प्रोजेक्ट को इस तरह कॉन्फ़िगर करता है कि जनरेट किए गए स्कीमा (जो कंपाइल करने के टास्क का आउटपुट होते हैं और ऑटो-माइग्रेशन के लिए इस्तेमाल किए जाते हैं) को सही तरीके से कॉन्फ़िगर किया जाता है, ताकि उन्हें फिर से बनाया जा सके और कैश मेमोरी में सेव किया जा सके.

प्लग इन जोड़ने के लिए, अपनी टॉप-लेवल Gradle बिल्ड फ़ाइल में, प्लग इन और उसके वर्शन की जानकारी दें.

Groovy

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

Kotlin

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

मॉड्यूल-लेवल की Gradle बिल्ड फ़ाइल में, प्लगिन लागू करें और room एक्सटेंशन का इस्तेमाल करें.

Groovy

plugins {
    id 'androidx.room'
}

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

Kotlin

plugins {
    id("androidx.room")
}

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

रूम Gradle प्लग इन का इस्तेमाल करते समय, schemaDirectory को सेट करना ज़रूरी है. इससे, Room कंपाइलर और कंपाइल करने के अलग-अलग टास्क और उसके बैकएंड (javac, KAPT, KSP) को कॉन्फ़िगर किया जाएगा, ताकि स्कीमा फ़ाइलों को अलग-अलग फ़ोल्डर में आउटपुट किया जा सके. उदाहरण के लिए, schemas/flavorOneDebug/com.package.MyDatabase/1.json. पुष्टि करने और अपने-आप माइग्रेट होने की सुविधा के लिए, इन फ़ाइलों को रिपॉज़िटरी में डाला जाना चाहिए.

कुछ विकल्पों को Room Gradle प्लग इन के सभी वर्शन में कॉन्फ़िगर नहीं किया जा सकता. भले ही, Room कंपाइलर इनका इस्तेमाल करता हो. नीचे दी गई टेबल में हर विकल्प की सूची दी गई है. साथ ही, Room Gradle प्लग इन का वह वर्शन भी दिखाया गया है जिसने room एक्सटेंशन का इस्तेमाल करके, उस विकल्प को कॉन्फ़िगर करने की सुविधा जोड़ी है. अगर आपके पास Analytics का पुराना वर्शन है या यह सुविधा अभी काम नहीं करती है, तो एनोटेशन प्रोसेसर के विकल्प का इस्तेमाल किया जा सकता है.

विकल्प Since version
room.schemaLocation (ज़रूरी) 2.6.0
room.incremental -
room.generateKotlin -

एनोटेशन प्रोसेसर के विकल्पों का इस्तेमाल करना

अगर आपने Room Gradle प्लग इन का इस्तेमाल नहीं किया है या आपका पसंदीदा विकल्प, प्लग इन के आपके वर्शन पर काम नहीं करता है, तो एनोटेशन प्रोसेसर के विकल्पों का इस्तेमाल करके Room को कॉन्फ़िगर किया जा सकता है. इसके बारे में बिल्ड डिपेंडेंसी जोड़ें में बताया गया है. एनोटेशन के विकल्पों को तय करने का तरीका इस बात पर निर्भर करता है कि आपने Room के लिए KSP या KAPT में से किसका इस्तेमाल किया है.

ग्रूवी

// 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 एक डायरेक्ट्री है, न कि प्राइमिटिव टाइप. इसलिए, इस विकल्प को जोड़ते समय CommandLineArgumentsProvider का इस्तेमाल करना ज़रूरी है, ताकि Gradle अप-टू-डेट जांच करते समय इस डायरेक्ट्री के बारे में जान सके. अपने Room डेटाबेस को माइग्रेट करें, CommandLineArgumentsProvider को पूरी तरह से लागू करने का तरीका दिखाता है. इससे स्कीमा की जगह की जानकारी मिलती है.

सुझाव

आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए अपना वोट जोड़ा जा सकता है.

नई समस्या बनाना

ज़्यादा जानकारी के लिए, समस्या को ट्रैक करने वाले टूल से जुड़ा दस्तावेज़ देखें.

वर्शन 2.7

वर्शन 2.7.0-alpha11

30 अक्टूबर, 2024

androidx.room:room-*:2.7.0-alpha11 रिलीज़ हो गया है. वर्शन 2.7.0-alpha11 में ये कमिट शामिल हैं.

एपीआई में हुए बदलाव

  • हाल ही में जोड़े गए convertRows() तरीके के हस्ताक्षर को फिर से देखें, ताकि इसे निलंबित करने वाला फ़ंक्शन बनाया जा सके. इस फ़ंक्शन को रूम पेजिंग के लिए RawRoomQuery मिलता है. (Ie57b5, b/369136627)

गड़बड़ियां ठीक की गईं

  • रूम पेजिंग में उस समस्या को ठीक किया गया है जिसकी वजह से PagingSource के साथ @Relation का इस्तेमाल करते समय, अमान्य कोड जनरेट हो रहा था.

वर्शन 2.7.0-alpha10

16 अक्टूबर, 2024

androidx.room:room-*:2.7.0-alpha10 रिलीज़ हो गया है. वर्शन 2.7.0-alpha10 में ये कमिट शामिल हैं.

एपीआई में हुए बदलाव

  • Android और गैर-JVM प्लैटफ़ॉर्म में ByteBuffer के साथ संबंध बनाने के लिए, इंटरनल ByteArrayWrapper क्लास बनाएं. (I75543, b/367205685)
  • किसी कॉलम के डेटा टाइप को वापस पाने के लिए, SQLITE_DATA_* नतीजे के अलग-अलग कॉन्सटेंट के साथ SQLiteStatement.getColumnType() जोड़ें. (I1985c, b/369636251)

वर्शन 2.7.0-alpha09

2 अक्टूबर, 2024

androidx.room:room-*:2.7.0-alpha09 रिलीज़ हो गया है. वर्शन 2.7.0-alpha09 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • room-paging के KMP लागू करने से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, रीड कनेक्शन पर लिखने का लेन-देन शुरू करने पर Error code: 8, message: attempt to write a readonly database होता है. (b/368380988)

वर्शन 2.7.0-alpha08

18 सितंबर, 2024

androidx.room:room-*:2.7.0-alpha08 रिलीज़ हो गया है. वर्शन 2.7.0-alpha08 में ये कमिट शामिल हैं.

नई सुविधाएं

  • room-paging आर्टफ़ैक्ट को KMP के साथ काम करने के लिए माइग्रेट कर दिया गया है. (Ib8756, b/339934824)
  • एपीआई invalidationTrackerFlow() को पहले-पक्ष के एपीआई के तौर पर, InvalidationTracker.createFlow() के तौर पर एक जैसा कर दिया गया है. साथ ही, केएमपी प्रोजेक्ट में Android के अलावा, दूसरे सोर्स सेट के लिए भी यह उपलब्ध है. (I1fbfa, (I8fb29), b/329291639, b/329315924)

एपीआई में हुए बदलाव

  • रूम में Cursor शब्द का इस्तेमाल करने वाली सभी चेतावनियों और गड़बड़ी के मैसेज को हटा दिया गया है या उन्हें बदल दिया गया है, क्योंकि रूम के केएमपी वर्शन में Cursor का इस्तेमाल करने के लिए, अब सटीक सामान्य शब्द नहीं है. (Id8cd9, b/334087492)

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसकी वजह से रूम केएमपी, गैर-JVM प्लैटफ़ॉर्म के लिए UUID का इस्तेमाल करके कोड छोड़ने की कोशिश करता है. (b/362994709)
  • Room Gradle प्लग इन से जुड़ी एक समस्या को ठीक किया गया है. इसकी वजह से, Compose के मल्टीप्लैटफ़ॉर्म वाले KMP प्रोजेक्ट में इस्तेमाल करने पर, ‘कॉन्फ़िगरेशन के एट्रिब्यूट में बदलाव नहीं किया जा सकता … क्योंकि इसे बदलाव के लिए लॉक कर दिया गया है’ जैसी गड़बड़ी होती थी. (b/343408758)

वर्शन 2.7.0-alpha07

21 अगस्त, 2024

androidx.room:room-*:2.7.0-alpha07 रिलीज़ हो गया है. वर्शन 2.7.0-alpha07 में ये कमिट शामिल हैं.

नई सुविधाएं

  • रूम Gradle प्लग इन अब एक्सपोर्ट किए गए स्कीमा को Android इंस्ट्रुमेंटेशन टेस्ट के संसाधन स्रोतों में अपने-आप जोड़ देगा, ताकि MigrationTestHelper उनका इस्तेमाल कर सके.

गड़बड़ियां ठीक की गईं

  • initialize फ़ंक्शन में RoomDatabaseConstructor के जनरेट किए गए 'असल' में 'असल' मॉडिफ़ायर मौजूद न होने की समस्या ठीक की गई है. ऐसा तब किया गया है, जब इस तरह के फ़ंक्शन को 'उम्मीद है' एलान में भी बदला गया हो. (359631627)
  • RoomDatabaseConstructor के जनरेट किए गए 'असल' एलान की जानकारी, 'अनुमानित' एलान की जानकारी से मेल नहीं खाने की समस्या को ठीक किया गया. (358138953)

वर्शन 2.7.0-alpha06

7 अगस्त, 2024

androidx.room:room-*:2.7.0-alpha06 रिलीज़ हो गया है. वर्शन 2.7.0-alpha06 में ये कमिट शामिल हैं.

एपीआई में हुए बदलाव

  • KMP प्रोजेक्ट में RoomDatabase के लिए इंस्टैंशिएशन का सेटअप बदलें.

Kotlin 2.0 कंपाइलेशन मॉडल की वजह से, instantiateImpl() नाम के ऐसे फ़ंक्शन का रेफ़रंस देने की रणनीति अब काम नहीं करती जिसे जनरेट करना है. @ConstructedBy और RoomDatabaseConstructor नाम के दो नए एपीआई पेश किए गए हैं. ये एपीआई, instantiateImpl() रणनीति की जगह लेते हैं. नई रणनीति इस तरह है:

  1. RoomDatabaseConstructor को लागू करने वाला अनुमानित ऑब्जेक्ट तय करें

      expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
    
  2. @ConstructedBy का इस्तेमाल करके, ऑब्जेक्ट को @Database एलान के साथ जोड़ें

      @Database(...)
      @ConstructedBy(MyDatabaseCtor::class) // NEW
      abstract class MyDatabase : RoomDatabase
    
  3. फ़ैक्ट्री आर्ग्युमेंट पास किए बिना, नया डेटाबेस इंस्टेंस बनाएं

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

b/316978491, b/338446862, और b/342905180 को ठीक करता है

  • रूम केएमपी में @RawQuery के लिए RoomRawQuery नाम का एक नया एपीआई जोड़कर काम करना. यह रॉ एसक्यूएल स्ट्रिंग को होल्ड करने और स्टेटमेंट में आर्ग्युमेंट को बाइंड करने के लिए SupportSQLiteQuery से मिलता-जुलता है. जानकारी देने वाले @RawQuery फ़ंक्शन, अब RoomRawQuery को अपने सिंगल पैरामीटर के तौर पर स्वीकार कर सकते हैं. (Iea844, b/330586815)
  • setQueryCallback() का एक ओवरलोड जोड़ें, जो CoroutineContext स्वीकार करता हो. (Id66ff, b/309996304)
  • linuxArm64 Kotlin के मल्टीप्लैटफ़ॉर्म टारगेट (I139d3, b/338268719) के लिए सहायता जोड़ी गई

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया गया है जिसकी वजह से Room, Android के अलावा दूसरे टारगेट में recursiveFetchArrayMap को गलत तरीके से कॉल जनरेट करता था. (710c36, b/352482325)
  • एक समस्या को ठीक किया गया है. इसमें, कभी-कभी KMP प्रोजेक्ट में Room, 'कनेक्शन की कोशिश करते समय टाइम आउट हो गया' के बारे में एक अपवाद दिखाता था. (fa72d0, b/347737870)
  • अपने-आप माइग्रेट होने की सुविधा से जुड़ी एक समस्या को ठीक किया गया है. इस समस्या की वजह से, नई फ़ॉरेन की के मुताबिक अन्य टेबल के स्कीमा बदलने से पहले, फ़ॉरेन की की जांच बहुत जल्दी हो जाती थी. (7672c0, b/352085724)

वर्शन 2.7.0-alpha05

10 जुलाई, 2024

androidx.room:room-*:2.7.0-alpha05 रिलीज़ हो गया है. वर्शन 2.7.0-alpha05 में ये कमिट मौजूद हैं.

एपीआई में हुए बदलाव

  • SQLiteKt का नाम बदलकर SQLite और BundledSQLiteKt का नाम बदलकर BundledSQLite किया गया. (I8b501)

गड़बड़ियां ठीक की गईं

  • एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, AndroidSQLiteDriver का इस्तेमाल करते समय RoomDatabase को डेडलॉक या कनेक्शन टाइम आउट की गड़बड़ी मिलती थी.

वर्शन 2.7.0-alpha04

12 जून, 2024

androidx.room:room-*:2.7.0-alpha04 रिलीज़ हो गया है. वर्शन 2.7.0-alpha04 में ये कमिट मौजूद हैं.

गड़बड़ियां ठीक की गईं

  • रूम के एनोटेशन प्रोसेसर में आई समस्या को ठीक करने से, डीएओ में मल्टी-मैप रिटर्न टाइप तय करने पर, काम न करने वाला केएमपी कोड जनरेट होगा. (b/340983093)
  • @Database एनोटेट की गई क्लास में कोई पैकेज न होने पर, जनरेट किए गए डेटाबेस को लागू करने में Room को आने वाली समस्या को ठीक किया गया है. (b/342097292)
  • एक से ज़्यादा इंस्टेंस अमान्य करने और अपने-आप बंद होने की सुविधा चालू करने पर, कभी-कभी ConcurrentModificationException गड़बड़ी का मैसेज दिखता था. ऐसा तब होता था, जब डेटाबेस इस्तेमाल में न होने की वजह से अपने-आप बंद हो जाता था.

वर्शन 2.7.0-alpha03

29 मई, 2024

androidx.room:room-*:2.7.0-alpha03 रिलीज़ हो गया है. वर्शन 2.7.0-alpha03 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Kotlin 2.0 और KSP 2.0 से जुड़ी कई समस्याएं ठीक की गई हैं. ध्यान दें कि KSP 2 के साथ काम करने वाला Kotlin 2.0 पूरी तरह से तैयार नहीं है. हमारी टीम, नए कंपाइलर में अलग-अलग एपीआई और काम करने के तरीके में हुए बदलावों पर काम कर रही है. (b/314151707)

वर्शन 2.7.0-alpha02

14 मई, 2024

androidx.room:room-*:2.7.0-alpha02 रिलीज़ हो गया है. वर्शन 2.7.0-alpha02 में ये कमिट मौजूद हैं.

गड़बड़ियां ठीक की गईं

  • KSP से जुड़ी कई समस्याएं ठीक की गईं.

वर्शन 2.7.0-alpha01

1 मई, 2024

androidx.room:room-*:2.7.0-alpha01 रिलीज़ हो गया है. वर्शन 2.7.0-alpha01 में ये कमिट शामिल हैं.

नई सुविधाएं

  • Kotlin Multiplatform (KMP) के साथ काम करने की सुविधा: इस रिलीज़ में, Room को Kotlin Multiplatform (KMP) लाइब्रेरी के तौर पर फिर से तैयार किया गया है. हालांकि, अब भी कुछ काम करने हैं, लेकिन इस रिलीज़ में Room का नया वर्शन लॉन्च किया गया है. इसमें ज़्यादातर सुविधाओं को “कॉमन-ाइज़्ड” (मल्टी-प्लैटफ़ॉर्म के लिए बनाया गया) किया गया है. फ़िलहाल, Android, iOS, JVM (डेस्कटॉप), Mac, और स्थानीय Linux प्लैटफ़ॉर्म ही इस्तेमाल किए जा सकते हैं. जिन प्लैटफ़ॉर्म पर ये सुविधाएं काम नहीं करतीं उन्हें सभी सुविधाओं के साथ उपलब्ध करा दिया जाएगा. ऐसा, आने वाले रूम की रिलीज़ में किया जाएगा.

रूम केएमपी का इस्तेमाल शुरू करने के बारे में ज़्यादा जानकारी के लिए, कृपया रूम केएमपी का आधिकारिक दस्तावेज़ देखें.

  • अगर केएसपी के ज़रिए प्रोसेस की जाती है, तो KSP पर Kotlin कोड जनरेट करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. KAPT या सिर्फ़ Java प्रोजेक्ट के लिए, रूम अब भी Java सोर्स जनरेट करेगा.

एपीआई में हुए बदलाव

  • Room.databaseBuilder() का एक ओवरलोड जोड़ा गया है, जो लैम्डा पैरामीटर लेता है. इसे रूम जनरेट किए गए फ़ंक्शन के साथ इस्तेमाल किया जाता है, ताकि जनरेट किए गए RoomDatabase को लागू करते समय रिफ़्लेक्शन का इस्तेमाल न हो. इस्तेमाल का उदाहरण:
Room.databaseBuilder<MyDatabase>(
    context = appContext,
    name = dbFilePath,
    factory =  { MyDatabase::class.instantiateImpl() }
)
  • CoroutineContext की मदद से रूम कॉन्फ़िगर करने के लिए, बिल्डर में एक एपीआई जोड़ा गया है: RoomDatabase.Builder.setQueryCoroutineContext. ध्यान दें कि RoomDatabase को सिर्फ़ setQueryExecutor का इस्तेमाल करके या कोरूटीन कॉन्टेक्स्ट के साथ कॉन्फ़िगर किया जा सकता है. हालांकि, दोनों में से किसी एक के साथ इसे कॉन्फ़िगर नहीं किया जा सकता.
  • SQLite ड्राइवर के साथ Room को कॉन्फ़िगर करने के लिए, एक एपीआई जोड़ा गया है: RoomDatabase.Builder.setDriver(). SQLite Driver API के बारे में ज़्यादा जानकारी के लिए, SQLite KMP दस्तावेज़ देखें
  • ड्राइवर एपीआई से मौजूदा SQLiteConnection को ऐक्सेस करने के लिए एपीआई जोड़े गए हैं: RoomDatabase.useReaderConnection और RoomDatabase.useWriterConnection.
  • Varios Room से जुड़े कॉलबैक का अब एक ओवरलोड किया गया वर्शन है, जिसे SupportSQLiteDatabase के बजाय SQLiteConnection मिलता है. KMP प्रोजेक्ट पर माइग्रेट करते समय, इन वैल्यू को बदल दिया जाता है. किसी Android ऐप्लिकेशन में कमरे के इस्तेमाल को सामान्य केएमपी मॉड्यूल में माइग्रेट करने के बारे में ज़्यादा जानकारी के लिए, डेटा को दूसरी जगह भेजने से जुड़ी गाइड देखें. कॉलबैक:
    • Migration.migrate(SQLiteConnection)
    • AutoMigrationSpec.onPostMigrate(SQLiteConnection)
    • RoomDatabase.Callback.onCreate(SQLiteConnection)
    • RoomDatabase.Callback.onDestructiveMigration(SQLiteConnection)
    • RoomDatabase.Callback.onOpen(SQLiteConnection)
  • KTX आर्टफ़ैक्ट androidx.room:room-ktx को उसके सभी एपीआई के साथ androidx.room:room-runtime में मर्ज कर दिया गया है. आर्टफ़ैक्ट अब खाली है. कृपया इसे अपनी डिपेंडेंसी सूची से हटाएं.

वर्शन 2.6

वर्शन 2.6.1

29 नवंबर, 2023

androidx.room:room-*:2.6.1 रिलीज़ हो गया है. वर्शन 2.6.1 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • जनरेट किए गए कोड में मौजूद समस्या को ठीक किया गया. इस समस्या की वजह से, EntityCursorConverter में डबल कॉलम की डिफ़ॉल्ट वैल्यू 0.0 के बजाय 0 पर सेट हो रही थी. फ़्लोट टाइप कॉलम के लिए, मिलते-जुलते एज-केस को ठीक करने का एक संभावित तरीका भी शामिल किया गया है. (Id75f5, b/304584179)
  • PagingSource लोड से मिले अपवाद, अब Throwable वाले LoadResult.Error के LoadStateUpdate के तौर पर प्रसारित किए जाएंगे. गड़बड़ी की यह स्थिति, PagingDataAdapter.loadStateFlow(Views) या LazyPagingItems.loadState(Compose) से देखी जा सकती है. ध्यान दें कि यह व्यवहार में होने वाले एक बदलाव को दिखाता है, जहां पहले की लोड की गड़बड़ियां, लोड को ट्रिगर करने वाले dao तरीके से दिए गए अपवाद के रूप में बबल अप होती हैं. (I93887, b/302708983)

वर्शन 2.6.0

18 अक्टूबर, 2023

androidx.room:room-*:2.6.0 रिलीज़ हो गया है. 2.6.0 वर्शन में ये बदलाव शामिल हैं.

2.5.0 के बाद किए गए ज़रूरी बदलाव

  • Kotlin कोड जनरेशन (या “Kotlin CodeGen”) को चालू करने का विकल्प अब रूम केएसपी में उपलब्ध है. (4297ec0). Room में Kotlin CodeGen की सुविधा चालू करने के लिए, KSP के लिए प्रोसेसर के विकल्पों में room.generateKotlin विकल्प का नाम जोड़ें. KSP के लिए प्रोसेसर के विकल्प पास करने के तरीके के बारे में ज़्यादा जानने के लिए, KSP का दस्तावेज़ देखें.

ध्यान दें: Kotlin CodeGen का इस्तेमाल करते समय, यह ध्यान देना ज़रूरी है कि कुछ और पाबंदियां भी जोड़ी गई हैं. Kotlin CodeGen में, एब्स्ट्रैक्ट प्रॉपर्टी को DAO गेट्टर या DAO क्वेरी के तौर पर इस्तेमाल करने की अनुमति नहीं है. इसके बजाय, उन्हें फ़ंक्शन के तौर पर फिर से लिखा जाना चाहिए, ताकि यह गलतफ़हमी न हो कि प्रॉपर्टी की वैल्यू में बदलाव नहीं किया जा सकता और उसका स्टोर किया गया नतीजा एक जैसा ही होता है. एक और पाबंदी जोड़ी गई है. अब Kotlin CodeGen के लिए Room में, Nullable कलेक्शन के रिटर्न टाइप इस्तेमाल करने की अनुमति नहीं है.

चेतावनी: आपको पता चल सकता है कि Kotlin CodeGen का इस्तेमाल करते समय, आपके प्रोजेक्ट में वैल्यू न होने की शर्त ज़्यादा सख्त है. Kotlin CodeGen में, टाइप आर्ग्युमेंट के लिए शून्य वैल्यू की अनुमति है या नहीं, यह अहम है. वहीं, Java में इस बात को ज़्यादातर अनदेखा किया जाता है. उदाहरण के लिए, मान लें कि आपके पास `Flow<foo\>` का रिटर्न टाइप है और टेबल खाली है. Java CodeGen में, इससे कोई समस्या नहीं होगी. हालांकि, Kotlin CodeGen में आपको गड़बड़ी का मैसेज मिलेगा. इससे बचने के लिए, आपको `Flow<foo?\>` का इस्तेमाल करना होगा. ऐसा मानते हुए कि कोई शून्य वैल्यू उत्सर्जित की गई है. </foo?\></foo\>

  • रूम Gradle प्लग इन के लिए नया आर्टफ़ैक्ट androidx.room आईडी वाले रूम में जोड़ दिया गया है. यह Gradle एनोटेशन प्रोसेसर विकल्पों के ज़रिए, स्कीमा के इनपुट और आउटपुट होने से जुड़ी कई मौजूदा समस्याओं को हल करता है. ज़्यादा जानकारी के लिए, Room के 2.6.0-alpha02 वर्शन के रिलीज़ नोट देखें.
  • रूम इकाइयों में वैल्यू क्लास, अब KSP के साथ काम करती हैं. (4194095)
  • डीएओ फ़ंक्शन में, नेस्ट किए गए मैप के रिटर्न टाइप अब रूम में काम करते हैं. (I13f48, 203008711)

वर्शन 2.6.0-rc01

20 सितंबर, 2023

androidx.room:room-*:2.6.0-rc01 रिलीज़ हो गया है. 2.6.0-rc01 वर्शन में ये बदलाव शामिल हैं.

वर्शन 2.6.0-beta01

23 अगस्त, 2023

androidx.room:room-*:2.6.0-beta01 रिलीज़ हो गया है. 2.6.0-beta01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अपसर्ट के दौरान SQLite अपवाद होने पर मिलने वाले खास केस को हैंडल करते समय, जब अपसर्ट के दौरान 2067 SQLITE_CONSTRAINT_UNIQUE अपवाद दिखता है, तो अपसर्ट को अपडेट करना चाहिए. (If2849, b/243039555)

वर्शन 2.6.0-alpha03

9 अगस्त, 2023

androidx.room:room-*:2.6.0-alpha03 रिलीज़ हो गया है. 2.6.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • डीएओ फ़ंक्शन में नेस्ट किए गए मैप के रिटर्न टाइप, अब Room में काम करते हैं. (I13f48, 203008711)

एपीआई में हुए बदलाव

  • @MapInfo की जगह लेने के लिए, @MapColumn नाम का एक नया टाइप एनोटेशन बनाया गया है. @MapInfo को अब इस्तेमाल नहीं किया जा सकता. @MapInfo एनोटेशन में दिए गए हर कॉलम के नाम (keyColumnName, valueColumnName या दोनों) के लिए, आपको सिर्फ़ columnName के साथ @MapColumn एनोटेशन का एलान करना होगा. साथ ही, DAO फ़ंक्शन के रिटर्न टाइप में, रेफ़रंस किए जा रहे खास टाइप के आर्ग्युमेंट (मैप की कुंजी या वैल्यू) पर एनोटेशन का इस्तेमाल करना होगा. इसकी वजह यह है कि @MapColumn एनोटेशन का इस्तेमाल, @MapInfo जैसे फ़ंक्शन के बजाय, डीएओ फ़ंक्शन के रिटर्न टाइप में टाइप आर्ग्युमेंट पर सीधे तौर पर किया जाता है. ज़्यादा जानकारी के लिए, कृपया @MapColumn दस्तावेज़ देखें. (Ib0305, b/203008711)
  • काम करने की सुविधा में रुकावट की व्याख्या करने के लिए, एपीआई फ़ाइलों को अपडेट किया गया (I8e87a, b/287516207)
  • Room Gradle प्लग इन एपीआई को अपडेट किया गया है, ताकि हर वैरिएंट के लिए कॉन्फ़िगरेशन की ज़रूरत न पड़े. इसका मतलब है कि प्लग इन, कई डायरेक्ट्री बनाने के बिना सभी वैरिएंट के लिए ग्लोबल लोकेशन स्वीकार कर सकता है. इससे माइग्रेशन आसानी से हो जाता है. साथ ही, प्लग इन के फ़ायदे (फिर से बनाए जा सकने वाले और कैश मेमोरी में सेव किए जा सकने वाले बिल्ड) को बनाए रखते हुए, फ़्लेवर या बिल्ड टाइप स्कीमा को मैन्युअल तरीके से कॉन्फ़िगर किया जा सकता है. (I09d6f, b/278266663)

गड़बड़ियां ठीक की गईं

  • QueryInterceptorStatement में, मेमोरी लीक होने के संभावित जोखिम को ठीक किया गया. (I193d1)
  • QueryInterceptorDatabase execSQL() फ़ंक्शन में गलत तरीके से काम करने की समस्या को ठीक किया गया. (Iefdc8)

वर्शन 2.6.0-alpha02

21 जून, 2023

androidx.room:room-*:2.6.0-alpha02 रिलीज़ हो गया है. वर्शन 2.6.0-alpha02 में ये कमियां हैं.

Room Gradle प्लग इन

इस नई रिलीज़ में, Room Gradle प्लग इन के लिए आईडी androidx.room वाला एक नया आर्टफ़ैक्ट शामिल है. इससे, Gradle एनोटेशन प्रोसेसर के विकल्पों की मदद से, स्कीमा के इनपुट और आउटपुट से जुड़ी Room की कई मौजूदा समस्याएं हल हो जाती हैं. रूम Gradle प्लग इन, प्रोजेक्ट को इस तरह कॉन्फ़िगर करता है कि जनरेट किए गए ऐसे स्कीमा जिनका अपने-आप माइग्रेशन के लिए इस्तेमाल किया जाता है और जो कंपाइल किए गए टास्क के आउटपुट होते हैं उन्हें फिर से बनाए जा सकने वाले और कैश किए जा सकने वाले बिल्ड पाने के लिए सही तरीके से कॉन्फ़िगर किया जाता है. यह प्लगिन, बेस स्कीमा की जगह को कॉन्फ़िगर करने के लिए डीएसएल की सुविधा देता है:

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

इसके बाद, प्लग इन Room कंपाइलर और कंपाइल करने के अलग-अलग टास्क और उसके बैकएंड (javac, KAPT, KSP) को कॉन्फ़िगर करेगा, ताकि स्कीमा फ़ाइलों को फ़्लेवर वाले फ़ोल्डर, जैसे कि schemas/flavorOneDebug/com.package.MyDatabase/1.json में आउटपुट किया जा सके. हमेशा की तरह, इन फ़ाइलों को रिपॉज़िटरी में चेक-इन किया जाता है, ताकि पुष्टि करने और अपने-आप माइग्रेशन होने की सुविधा के लिए उनका इस्तेमाल किया जा सके. एनोटेशन प्रोसेसर के विकल्पों के बजाय प्लग इन का इस्तेमाल करने के लिए माइग्रेट करने पर, मौजूदा स्कीमा फ़ाइलों को प्लग इन से जनरेट की गई फ़्लेवर डायरेक्ट्री में कॉपी किया जाना चाहिए. यह माइग्रेशन की एक बार की जाने वाली कार्रवाई है, जिसे मैन्युअल तरीके से पूरा करना होगा. developers.android.com पर मौजूद स्कीमा दस्तावेज़ को आने वाले समय में अपडेट किया जाएगा. ऐसा तब होगा, जब सुझाव/राय/शिकायत को ठीक कर दिया जाएगा और प्लग इन को स्टेबल कर दिया जाएगा. इसलिए, कृपया इसे आज़माएं.

एपीआई में हुए बदलाव

  • RoomDatabase.QueryCallback को फ़ंक्शनल इंटरफ़ेस के तौर पर परिभाषित किया गया है, ताकि SAM कन्वर्ज़न का इस्तेमाल किया जा सके. (Iab8ea, b/281008549)

गड़बड़ियां ठीक की गईं

  • Room सोर्स को Java से Kotlin में माइग्रेट करने के बाद, Robolectric में डेटाबेस को इंस्टैंशिएट करते समय आने वाली समस्या को हल करना. (Ic053c, b/274924903)

वर्शन 2.6.0-alpha01

22 मार्च, 2023

androidx.room:room-*:2.6.0-alpha01 रिलीज़ हो गया है. 2.6.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • KSP के लिए रूम में वैल्यू क्लास की सुविधा. Room में अब इकाइयों में वैल्यू क्लास का इस्तेमाल किया जा सकता है. (4194095)
  • Kotlin कोड जनरेशन(या “Kotlin CodeGen”) को अब Room (4297ec0) में चालू किया जा सकता है. Room में Kotlin CodeGen की सुविधा चालू करने के लिए, KSP के लिए प्रोसेसर के विकल्पों में room.generateKotlin विकल्प का नाम जोड़ें. KSP के लिए प्रोसेसर के विकल्प पास करने के तरीके के बारे में ज़्यादा जानने के लिए, KSP का दस्तावेज़ देखें.

ध्यान दें: Kotlin CodeGen का इस्तेमाल करते समय, यह ध्यान रखना ज़रूरी है कि इसमें कुछ और पाबंदियां जोड़ी गई हैं. Kotlin CodeGen में, एब्स्ट्रैक्ट प्रॉपर्टी को DAO गेट्टर या DAO क्वेरी के तौर पर इस्तेमाल करने की अनुमति नहीं है. इसके बजाय, उन्हें फ़ंक्शन के तौर पर फिर से लिखा जाना चाहिए, ताकि यह गलतफ़हमी न हो कि प्रॉपर्टी की वैल्यू में बदलाव नहीं किया जा सकता और उसका स्टोर किया गया नतीजा एक जैसा ही होता है. एक और पाबंदी यह भी जोड़ी गई है कि Kotlin CodeGen के लिए रूम में अब बिना वैल्यू वाले कलेक्शन रिटर्न टाइप की अनुमति नहीं है.

चेतावनी: आपको पता चल सकता है कि Kotlin CodeGen का इस्तेमाल करते समय, आपके प्रोजेक्ट में वैल्यू न होने की शर्त ज़्यादा सख्त है. Kotlin CodeGen में, टाइप आर्ग्युमेंट के लिए शून्य वैल्यू की अनुमति है या नहीं, यह अहम है. वहीं, Java में इस बात को ज़्यादातर अनदेखा किया जाता है. उदाहरण के लिए, मान लें कि आपके पास `Flow<foo\>` का रिटर्न टाइप है और टेबल खाली है. Java CodeGen में इससे कोई समस्या नहीं होगी. हालांकि, Kotlin CodeGen में आपको एक गड़बड़ी मिलेगी. इससे बचने के लिए, आपको `Flow<foo?\>` का इस्तेमाल करना होगा. ऐसा मानते हुए कि कोई शून्य वैल्यू उत्सर्जित की गई है. </foo?\></foo\>

एपीआई में हुए बदलाव

  • डीएओ तरीके के रिटर्न टाइप में, शून्य हो सकने वाले कलेक्शन के इस्तेमाल से बचना. (I777dc, b/253271782, b/259426907)
  • अमान्य ट्रैकर में हुए बदलावों को एमिट करने वाला फ़्लो बनाने के लिए, एपीआई जोड़ें. यह एपीआई, ऐसी स्ट्रीम बनाने के लिए काम का है जिनमें डेटाबेस में होने वाले बदलावों पर कार्रवाई की ज़रूरत होती है. (I8c790, b/252899305)

गड़बड़ियां ठीक की गईं

  • Kotlin कोडजन में, ऐब्स्ट्रैक्ट प्रॉपर्टी को डीएओ गेटर या डीएओ क्वेरी के तौर पर अनुमति न दें. इसके बजाय, उन्हें फ़ंक्शन के तौर पर फिर से लिखा जाना चाहिए, ताकि प्रॉपर्टी की वैल्यू में बदलाव न किए जा सकने वाले न होने और उसका स्टोर किया गया नतीजा तय न हो. (If6a13, b/127483380, b/257967987)

वर्शन 2.5.2

वर्शन 2.5.2

21 जून, 2023

androidx.room:room-*:2.5.2 रिलीज़ हो गया है. 2.5.2 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • kotlinx-metadata-jvm के साथ काम न करने की समस्या को ठीक करना. (386d5c)
  • Robolectric टेस्ट में इस्तेमाल करने पर, Room में गड़बड़ी होने की समस्या को ठीक किया गया है. (f79bea, b/274924903)

वर्शन 2.5.1

वर्शन 2.5.1

22 मार्च, 2023

androidx.room:room-*:2.5.1 रिलीज़ हो गया है. 2.5.1 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अगर डेटाबेस पहले से खुला है, तो FrameworkSQLiteHelper में डेटाबेस पैरंट डायरेक्ट्री की जांच करने से बचें. (5de86b8)
  • डेटाबेस पहले से खुला है या नहीं, यह देखने के लिए isOpenInternal चेक का इस्तेमाल करें. (e91fb35)
  • रूम के acquireTransactionThread() में, फिर से शामिल होने वाले व्यक्ति को बेहतर तरीके से मैनेज करने की सुविधा अब उपलब्ध है. (219f98b). रोके गए लेन-देन के दौरान, Room, लेन-देन को लागू करने वाले टेंप्लेट से किसी थ्रेड का इस्तेमाल करता है. साथ ही, उसमें इवेंट लूप शुरू करता है और रोके गए डेटाबेस ऑपरेशन को उसमें भेजता है, ताकि वे सभी लेन-देन के कोरयूटीन में शामिल हो जाएं. आम तौर पर, यह उम्मीद की जाती है कि लेन-देन की थ्रेड, लेन-देन शुरू करने वाली थ्रेड से अलग हो, लेकिन कुछ मामलों में वे एक ही होती हैं. फिर से साइन इन करने के ऐसे मामलों को मैनेज करने के लिए, withTransaction() को फिर से रीफ़ैक्टर किया गया, ताकि यह कंट्रोल जॉब पर निर्भर न रहे. इसके बजाय, यह ट्रांज़ैक्शन थ्रेड में मौजूद runBlocking में से, लेन-देन के निलंबित किए गए ब्लॉक को लागू करेगा.

वर्शन 2.5.0

वर्शन 2.5.0

22 फ़रवरी, 2023

androidx.room:room-paging-guava:2.5.0, androidx.room:room-paging-rxjava2:2.5.0, और androidx.room:room-paging-rxjava3:2.5.0 रिलीज़ हो गए हैं. 2.5.0 वर्शन में ये बदलाव शामिल हैं.

वर्शन 2.5.0

11 जनवरी, 2023

androidx.room:room-*:2.5.0 रिलीज़ हो गया है. 2.5.0 वर्शन में ये बदलाव शामिल हैं.

2.4.0 के बाद किए गए ज़रूरी बदलाव

  • room-runtime के सभी सोर्स को Java से Kotlin में बदल दिया गया है. ध्यान दें कि अगर आपका कोड, Kotlin में है, तो आपको सोर्स के साथ काम न करने से जुड़ी समस्याएं आ सकती हैं. ऐसा, Kotlin में लाइब्रेरी के कन्वर्ज़न की वजह से हो सकता है. उदाहरण के लिए, सोर्स के साथ काम न करने वाला एक बदलाव यह है कि InvalidationTracker में अब आपको Observer में onInvalidate() का एलान करना होगा, ताकि MutableSet के बजाय Set टाइप का पैरामीटर हो. इसके अलावा, कुछ गेट्टर मेथड को प्रॉपर्टी में बदल दिया गया है. इसके लिए, Kotlin फ़ाइलों पर प्रॉपर्टी ऐक्सेस सिंटैक्स की ज़रूरत होती है. अगर कोई ऐसी समस्या है जो काम नहीं करती, तो कृपया गड़बड़ी की शिकायत करें.
  • एक नया शॉर्टकट एनोटेशन जोड़ा गया, @Upsert, जो यूनीकनेस विवाद न होने पर इकाई को शामिल करने की कोशिश करता है या कोई टकराव होने पर इकाई को अपडेट करता है. (I7aaab, b/241964353)
  • रूम पेजिंग में मदद के लिए, रूम पेजिंग आर्टफ़ैक्ट room-paging-rxjava2, room-paging-rxjava3, और room-paging-guava जोड़े गए हैं.
  • @MapInfo (Icc4b5) में, अलग-अलग चीज़ों के बीच अंतर करने के लिए, की और वैल्यू टेबल के नाम देने के लिए एपीआई जोड़े गए

वर्शन 2.5.0-rc01

7 दिसंबर, 2022

androidx.room:room-*:2.5.0-rc01 रिलीज़ हो गया है. 2.5.0-rc01 वर्शन में ये बदलाव शामिल हैं.

  • यह रिलीज़, 2.5.0-beta02 जैसी ही है.

वर्शन 2.5.0-beta02

9 नवंबर, 2022

androidx.room:room-*:2.5.0-beta02 रिलीज़ हो गया है. 2.5.0-beta02 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • ऐसे अलग-अलग एपीआई ठीक करें जो क्वेरी के आर्ग्युमेंट को इनवैरिएंट (Array<Any?>) से कॉन्ट्रावैरिएंट (Array<out Any?>) में बदलते हैं, ताकि वे Java के ऐरे के व्यवहार से मेल खा सकें. (b/253531073)

वर्शन 2.5.0-beta01

5 अक्टूबर, 2022

androidx.room:room-*:2.5.0-beta01 रिलीज़ हो गया है. 2.5.0-beta01 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • @Upsert के साथ काम करने वाले कम से कम वर्शन को एपीआई 16 पर सेट करें. ऐसा इसलिए होता है, क्योंकि पुराने एपीआई में, मुख्य कुंजी की कंस्ट्रेंट की समस्या की पहचान नहीं की जा सकती. (I5f67f, b/243039555)

गड़बड़ियां ठीक की गईं

  • शैडो टेबल को स्कीमा .json फ़ाइलों में गलत तरीके से एक्सपोर्ट करने और उन्हें खराब करने से जुड़ी समस्या को ठीक किया गया है. (I4f83b, b/246751839)

वर्शन 2.5.0-alpha03

24 अगस्त, 2022

androidx.room:room-*:2.5.0-alpha03 रिलीज़ हो गया है. 2.5.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • नया शॉर्टकट एनोटेशन, @Upsert जोड़ा गया है. यह एनोटेशन, यूनीकिटी से जुड़ी कोई समस्या न होने पर इकाई को शामिल करने की कोशिश करता है. अगर कोई समस्या होती है, तो इकाई को अपडेट करता है. (I7aaab, b/241964353)

गड़बड़ियां ठीक की गईं

  • अपने-आप माइग्रेट होने वाली फ़ॉरेन-की की शर्त की जांच के दौरान, Room अब IllegalStateException के बजाय SQLiteConstraintException दिखाएगा. (I328dd)
  • getOpenHelper, getQueryExecutor, और getTransactionExecutor के गेट्टर / प्रॉपर्टी के लिए, Kotlin सोर्स के साथ काम न करने वाले बदलाव को ठीक करें. (Iad0ac)

वर्शन 2.5.0-alpha02

1 जून, 2022

androidx.room:room-*:2.5.0-alpha02 रिलीज़ हो गया है. 2.5.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • रूम में पेजिंग की सुविधा के लिए, नए room-paging आर्टफ़ैक्ट room-paging-rxjava2, room-paging-rxjava3, और room-paging-guava जोड़े गए हैं.(41a1d4,b/203666906),(eb6098,b/203666906),(1b9ae4,b/203666906)

एपीआई में बदलाव

  • room-runtime को Java से Kotlin में बदल दिया गया है. (If2069, b/206859668),(Ie4b55, b/206859668), (I697ee, b/206859668), (I96c25) {185b

    ध्यान दें: लाइब्रेरी को Kotlin में बदलने की वजह से, आपको सोर्स के साथ काम न करने से जुड़ी समस्याएं आ सकती हैं. अगर आपका कोड Kotlin में था और रूम के पुराने वर्शन को कॉल कर रहा था, तो नए वर्शन को इन मामलों को हैंडल करना होगा. उदाहरण के लिए, सोर्स के साथ काम न करने वाला एक बदलाव यह है कि InvalidationTracker में अब आपको Observer में onInvalidate() का एलान करना होगा, ताकि MutableSet के बजाय Set टाइप का पैरामीटर हो.

  • @MapInfo (Icc4b5) में, अलग-अलग चीज़ों के बीच अंतर करने के लिए, की और वैल्यू टेबल के नाम देने के लिए एपीआई जोड़े गए
  • प्रॉपर्टी पाने वाले फ़ंक्शन में @Ignore को फिर से इस्तेमाल करने की अनुमति देने के लिए, सोर्स के साथ काम करने से जुड़ी समस्या को ठीक करें. (Ifc2fb)

गड़बड़ियां ठीक की गईं

  • डुप्लीकेट कॉलम को हटाने के लिए, एल्गोरिदम का इस्तेमाल करना. Room अब मल्टीमैप क्वेरी में, ऐसे कॉलम को हल करने की कोशिश करेगा जिनमें कॉलम के नाम की जानकारी साफ़ तौर पर नहीं दी गई है. इससे, एक ही नाम वाली टेबल वाले जॉइन को नतीजे के डेटा ऑब्जेक्ट पर सही तरीके से मैप किया जा सकता है. (I4b444, b/201306012, b/212279118)

वर्शन 2.5.0-alpha01

23 फ़रवरी, 2022

androidx.room:room-*:2.5.0-alpha01 रिलीज़ हो गया है. 2.5.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

एपीआई में बदलाव

  • Kotlin सोर्स में Room @IntDef के इस्तेमाल को लागू न करने से जुड़ी समस्या को ठीक किया गया. (I75f41, b/217951311)
  • प्रॉपर्टी पाने वाले फ़ंक्शन में @Query को फिर से इस्तेमाल करने की अनुमति देने के लिए, सोर्स की कम्पैटिबिलिटी से जुड़ी समस्या को ठीक किया गया. (I0a09b)
  • रूम-सामान्य को Java से Kotlin में बदला गया. (I69c48, b/206858235)

    ध्यान दें: लाइब्रेरी को Kotlin में बदलने के दौरान, कुछ प्रॉपर्टी को साथी ऑब्जेक्ट में ले जाया गया है. इस वजह से, आपको सोर्स के साथ काम न कर पाने से जुड़ी समस्याएं आ सकती हैं. अगर आपका कोड Kotlin में है और Room के पुराने वर्शन को कॉल किया जा रहा है, तो इन प्रॉपर्टी को ऐक्सेस करने के लिए, नए वर्शन में ".Companion" सफ़िक्स की ज़रूरत होगी.

  • रूम से जुड़े माइग्रेशन को Java से Kotlin में बदला गया. (I2724b, b/206858622)
  • room-runtime में मौजूद paging मिलती-जुलती फ़ाइलों को Java से Kotlin में बदला. (I82fc8, b/206859668)
  • एक से ज़्यादा प्रोसेस को पहली बार बनाने वाले डेटाबेस बनाने और माइग्रेट करने की सुविधा को सुरक्षित रखने के लिए, FrameworkSQLite* लेवल पर मल्टी-प्रोसेस लॉक और इसके इस्तेमाल के लिए एपीआई जोड़ा गया. (Ied267, b/193182592)

गड़बड़ियां ठीक की गईं

  • Kotlin सोर्स में इंटरनल प्रॉपर्टी के लिए सहायता जोड़ी गई. Room में, फ़ंक्शन के सोर्स नाम का इस्तेमाल किया जाएगा. साथ ही, उन्हें गेट्टर/सेटर के तौर पर प्रॉपर्टी से मैच किया जाएगा. पहले, फ़ंक्शन के JVM नाम का इस्तेमाल किया जाता था, जो इंटरनल फ़ंक्शन/प्रॉपर्टी के लिए अलग होता है. अगर निजी प्रॉपर्टी के साथ, गेट्टर/सेटर को मैच करने के लिए कस्टम @JvmName एनोटेशन का इस्तेमाल किया जा रहा है, तो अपडेट के बाद जनरेट किए गए कोड की दोबारा जांच करें (If6531, b/205289020)

वर्शन 2.4.3

वर्शन 2.4.3

27 जुलाई, 2022

androidx.room:room-*:2.4.3 रिलीज़ हो गया है. 2.4.3 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से रूम, Kotlin 1.7 (b/236612358) में सस्पेंड फ़ंक्शन को नहीं पहचान पाता था

वर्शन 2.4.2

वर्शन 2.4.2

23 फ़रवरी, 2022

androidx.room:room-*:2.4.2 रिलीज़ हो गया है. 2.4.2 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • -Xjvm-default=all या मिलते-जुलते टूल के साथ कंपाइल करने की वजह से, डिफ़ॉल्ट इंटरफ़ेस का तरीका जनरेट करने वाले बॉडी के साथ, Dao @Transaction निलंबित करने वाले फ़ंक्शन के लिए कोड जनरेट करने से जुड़ी समस्या को ठीक करें. (Ia4ce5)
  • एक गड़बड़ी को ठीक करना, जिसमें Room, Array<ByteArray> रिटर्न टाइप क्वेरी के तरीके के लिए कोड जनरेट करता है. (If086e, b/213789489)

वर्शन 2.4.1

वर्शन 2.4.1

12 जनवरी, 2022

androidx.room:room-*:2.4.1 रिलीज़ हो गया है. वर्शन 2.4.1 में ये कमियां शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Kotlin सोर्स में इंटरनल प्रॉपर्टी के लिए सपोर्ट जोड़ा गया. रूम में यह थोड़ा सा बदलाव है. इसमें यह फ़ंक्शन के सोर्स नाम का इस्तेमाल करता है और प्रॉपर्टी से गेटर/सेटर के तौर पर उन्हें मैच करता है. पहले, यह फ़ंक्शन के JVM नाम का इस्तेमाल करता था, जो इंटरनल फ़ंक्शन/प्रॉपर्टी के लिए अलग होता है. अगर निजी प्रॉपर्टी के साथ, गेट्टर/सेटर को मैच करने के लिए कस्टम @JvmName एनोटेशन का इस्तेमाल किया जा रहा है, तो अपडेट के बाद जनरेट किए गए कोड की दोबारा जांच करें (If6531, b/205289020)

वर्शन 2.4.0

वर्शन 2.4.0

15 दिसंबर, 2021

androidx.room:room-*:2.4.0 रिलीज़ हो गया है. वर्शन 2.4.0 में ये कमियां शामिल हैं.

2.3.0 के बाद किए गए अहम बदलाव

  • अपने-आप माइग्रेट होना: अब Room में, एपीआई की मदद से अपने-आप माइग्रेशन जनरेट करने की सुविधा उपलब्ध है. हालांकि, इसके लिए ज़रूरी है कि स्कीमा एक्सपोर्ट किए गए हों. रूम को यह बताने के लिए कि उसे अपने-आप माइग्रेट होने की सुविधा जनरेट करनी चाहिए, एक नई प्रॉपर्टी @Database#autoMigrations का इस्तेमाल करके, अलग-अलग वर्शन से अपने-आप माइग्रेट होने का एलान किया जा सकता है. जब Room को टेबल और कॉलम के नाम बदलने या मिटाने के बारे में ज़्यादा जानकारी चाहिए, तो @AutoMigration एनोटेशन, ऐसी खास जानकारी वाली क्लास का एलान कर सकता है. ज़्यादा जानकारी के लिए, @AutoMigration दस्तावेज़ देखें.
  • अपने-आप होने वाले माइग्रेशन में डिपेंडेंसी इंजेक्शन: @ProvidedAutoMigrationSpec एक नया एपीआई है. इसका इस्तेमाल करके यह बताया जाता है कि RoomDatabase.Builder#addAutoMigrationSpec() के ज़रिए रनटाइम के दौरान AutoMigrationSpec दिया जाएगा. इससे, डिपेंडेंसी इंजेक्शन फ़्रेमवर्क को ऐसी खास जानकारी देने में मदद मिलती है, जब उन्हें जटिल डिपेंडेंसी की ज़रूरत होती है.
  • अपने-आप माइग्रेट होने की सुविधा के लिए, माइग्रेशन टेस्ट हेल्पर की सहायता: Room के MigrationTestHelper को अपडेट किया गया है, ताकि अपने-आप माइग्रेट होने की सुविधा काम कर सके. इसके लिए, एक नया कन्स्ट्रक्टर एपीआई जोड़ा गया है, जो टेस्ट में शामिल डेटाबेस क्लास को स्वीकार करता है. इससे, runMigrationsAndValidate के दौरान भी हेल्पर, अपने-आप माइग्रेट होने की सुविधा को उसी तरह से जोड़ सकता है.
  • रूम में पेजिंग की सुविधा: androidx.room:room-paging रिलीज़ हो गया है. इससे, रूम में की गई क्वेरी के नतीजों के तौर पर androidx.paging.PagingSource दिखाने के लिए, पेजिंग 3.0 की नेटिव सुविधा मिलती है.
  • रिलेशनल क्वेरी के तरीके: Room में अब मल्टीमैप रिटर्न टाइप @Dao के तरीके काम करते हैं. ये JOIN स्टेटमेंट के लिए काम के हैं. मल्टीमैप के Map, SparseArray, LongSparseArray जैसे टाइप इस्तेमाल किए जा सकते हैं. साथ ही, Guava के ImmutableMap, ImmutableSetMultimap, और ImmutableListMultimap टाइप भी इस्तेमाल किए जा सकते हैं.

वर्शन 2.4.0-rc01

1 दिसंबर, 2021

androidx.room:room-*:2.4.0-rc01 रिलीज़ हो गया है. 2.4.0-rc01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Kotlin 1.6 के साथ काम करने के लिए, Room की KSP डिपेंडेंसी को 1.6.0-1.0.1 पर अपडेट करना

वर्शन 2.4.0-beta02

17 नवंबर, 2021

androidx.room:room-*:2.4.0-beta02 रिलीज़ हो गया है. वर्शन 2.4.0-beta02 में ये कमिट हैं.

नई सुविधाएं

  • हमने @MapInfo में SparseArray और LongSparseArray के लिए सहायता जोड़ी है. (Ic91a2b/138910317)

गड़बड़ियां ठीक की गईं

  • हमने TypeConverter का एक नया ऐनालाइज़र जोड़ा है, जो वैल्यू के लिए शून्य होने की जानकारी को ध्यान में रखता है. यह जानकारी सिर्फ़ KSP में उपलब्ध है. इसलिए, यह सिर्फ़ KSP में डिफ़ॉल्ट रूप से चालू होती है. अगर इससे कोई समस्या आती है, तो उसे बंद करने के लिए,room.useNullAwareTypeAnalysis=false को एनोटेशन प्रोसेसर को पास करें. अगर ऐसा होता है, तो कृपया इस गड़बड़ी की शिकायत करें, क्योंकि आने वाले समय में यह फ़्लैग हटा दिया जाएगा. TypeConverter के इस नए विश्लेषक के साथ, सिर्फ़ ऐसे TypeConverter इस्तेमाल करने का सुझाव दिया जाता है जो वैल्यू के तौर पर null नहीं देते. ऐसा इसलिए, क्योंकि नए विश्लेषक में वैल्यू के तौर पर null देने वाले TypeConverter को null की जांच के साथ रैप करने की सुविधा होती है. ध्यान दें कि इस बदलाव का असर, KAPT या Java का इस्तेमाल करने वाले लोगों पर नहीं पड़ेगा. ऐसा इसलिए, क्योंकि एनोटेशन प्रोसेसर (KSP के उलट) में वैल्यू के लिए 'शून्य हो सकती है' जानकारी नहीं होती. (Ia88f9, b/193437407)
  • एक गड़बड़ी को ठीक किया गया है. इसमें, जब कोई एफ़टीएस इकाई, ICU टोकनेटर का इस्तेमाल करने का एलान करती थी, तो SQL गड़बड़ी की वजह से Room को कंपाइल नहीं किया जा सकता था. (I00db9, b/201753224)
  • वर्शन के बीच एम्बेड की गई इकाई में जोड़े गए नए कॉलम से जुड़े, अपने-आप माइग्रेट होने की समस्या हल की गई. (I5fcb1b/193798291)
  • हमने LEFT JOIN क्वेरी में, रिलेशनल क्वेरी के तरीके से रिटर्न किए जाने वाले टाइप से जुड़ी समस्या को हल कर दिया है. इन बदलावों के बाद, अगर एक-से-ज़्यादा मैपिंग मौजूद है, तो किसी कुंजी के लिए दिखाए गए कलेक्शन में अमान्य वैल्यू ऑब्जेक्ट शामिल नहीं होगा. ऐसा तब होगा, जब वह कर्सर में न मिले. अगर कोई मान्य वैल्यू नहीं मिलती है, तो किसी कुंजी को खाली कलेक्शन से मैप किया जाएगा. (Id5552b/201946438)
  • अपने-आप माइग्रेट होने की उस समस्या को ठीक किया गया है जिसमें कॉलम के नामों में SQLite कीवर्ड को एस्केप नहीं किया जा सका. (Idbed4b/197133152)

वर्शन 2.4.0-beta01

13 अक्टूबर, 2021

androidx.room:room-*:2.4.0-beta01 रिलीज़ हो गया है. 2.4.0-beta01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • अपने-आप होने वाले माइग्रेशन में नए कॉलम न जोड़ने की समस्या ठीक की गई, जबकि इसी नाम से, दूसरी टेबल में भी नया कॉलम था. (Ia5db5, b/200818663)
  • रूम-पेजिंग से जनरेट किया गया पेजिंगसोर्स लागू करने के लिए, अब RoomDatabase.Builder से पास किए गए queryExecutor का इस्तेमाल किया जाता है. इसलिए, इसे पहले Dispatchers.IO के बजाय बदला जा सकता है. (Iae259)

वर्शन 2.4.0-alpha05

29 सितंबर, 2021

androidx.room:room-*:2.4.0-alpha05 रिलीज़ हो गया है. 2.4.0-alpha05 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

एपीआई में हुए बदलाव

  • TypeConverters एनोटेशन में एक नई प्रॉपर्टी जोड़ी गई है, ताकि डेवलपर, Enum और UUID कन्वर्टर को बंद कर सकें. ये कन्वर्टर डिफ़ॉल्ट रूप से चालू होते हैं. हालांकि, इन्हें किसी खास स्कोप या पूरे डेटाबेस के लिए बंद किया जा सकता है. ज़्यादा जानकारी के लिए, TypeConverters दस्तावेज़ देखें. (36ae9e, b/195413406)

  • @MapInfo एनोटेशन की मदद से, डीएओ में मल्टीमैप रिटर्न टाइप के लिए, बिना पीओजेओ वाली कुंजियों/वैल्यू के साथ काम करना. (I4d704)

@MapInfo तब ज़रूरी होगा, जब मैप का की या वैल्यू कॉलम, एक ही कॉलम से हो. उदाहरण देखें:

@MapInfo(valueColumn = "songCount")
@Query("""
       SELECT *, COUNT(mSongId) as songCount
       FROM Artist JOIN Song ON Artist.artistName = Song.artist
       GROUP BY artistName
       """)
fun getArtistAndSongCounts(): Map<Artist, Integer>
  • Room के साथ Paging3 का इस्तेमाल करते समय, room-paging को एक ज़रूरी आर्टफ़ैक्ट बनाएं. (Ieaffe)

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक किया जा सकता है जहां मल्टीमैप क्वेरी के नतीजों को तब सही तरीके से ऑर्डर नहीं किया गया था, जब क्वेरी में मैप की कुंजी में मौजूद किसी कॉलम का ORDER BY क्लॉज़ था. (I6b887)

बाहरी योगदान

  • @Index में इंडेक्स के क्रम की जानकारी देने के लिए, नया एपीआई जोड़ा गया. निकिता झेलोनकिन को धन्यवाद. (I033fc)

वर्शन 2.4.0-alpha04

21 जुलाई, 2021

androidx.room:room-*:2.4.0-alpha04 रिलीज़ हो गया है. 2.4.0-alpha04 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Room में अब एक से ज़्यादा मैप के रिटर्न टाइप @Dao के तरीके काम करते हैं. ये JOIN स्टेटमेंट के लिए काम के होते हैं. मल्टीमैप के तौर पर Map के साथ-साथ, Guava के ImmutableMap, ImmutableSetMultimap, और ImmutableListMultimap का इस्तेमाल किया जा सकता है.

    यहां मल्टीमैप क्वेरी के उदाहरण दिए गए हैं:

    वन-टू-वन रिलेशन मैप

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

    एक-से-कई संबंध वाला मैप (स्टैंडर्ड मल्टीमैप)

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

    मल्टीमैप के नतीजे को, काम करने वाले असाइनिक रिटर्न टाइप में भी रैप किया जा सकता है. जैसे, LiveData, Rx के Observable या कोरूटीन Flow.

रूम-पेजिंग

  • androidx.room:room-paging रिलीज़ किया गया, जिसमें रूम क्वेरी के लिए नेटिव पेजिंग 3.0 की सुविधा उपलब्ध कराई गई है. यह सुविधा androidx.paging.PagingSource के ज़रिए वापस आती है.

    @Dao
    interface UserDao {
      @Query("SELECT * FROM users ORDER BY id ASC")
      fun loadUsers(): PagingSource<Int, User>
    }
    
  • यह आर्टफ़ैक्ट, Room से जनरेट किए गए androidx.paging.PagingSource लागू करने के तरीके को, Paging 3.0 API के आधार पर बनाए गए तरीके से बदल देता है. नया PagingSource लागू करने की प्रक्रिया कुंजियों को अलग तरीके से पार्स करता है, इसलिए रूम के PagingSource को मैन्युअल रूप से दी गई किसी भी कुंजी को व्यवहार में होने वाले बदलाव के लिए ध्यान में रखना होगा. इसमें पेजर के कंस्ट्रक्टर से पास की गई beforeKey शामिल है. पेज Key से लोड होने लगेंगे. इसमें Key, सबसे पहले लोड होने वाला आइटम होगा. यह मौजूदा व्यवहार से अलग है, जहां LoadParams.Refresh.Key को उपयोगकर्ता की स्क्रोल पोज़िशन माना जाता है और आइटम, बटन से पहले और बाद, दोनों में लोड किए जाते हैं.

  • आर्टफ़ैक्ट का इस्तेमाल करना ज़रूरी नहीं है. ऑप्ट आउट करने पर, पेजिंग 3.0 के लिए मौजूदा सहायता का इस्तेमाल किया जाएगा. इसे Room 2.3 में लॉन्च किया गया था. हालांकि, पेजिंग 3.0 के साथ रूम का इस्तेमाल करने वाले लोगों के लिए, आने वाले समय में रिलीज़ होने वाली रिलीज़ में, इस आर्टफ़ैक्ट का इस्तेमाल करना ज़रूरी नहीं है. ऑप्ट-इन करने के लिए, अपने क्लासपाथ में नया रूम-पेजिंग आर्टफ़ैक्ट जोड़ें. अगर Gradle का इस्तेमाल किया जा रहा है, तो अपने build.gradle में यह स्निपेट जोड़ा जा सकता है:

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

गड़बड़ियां ठीक की गईं

  • फ़ॉरेन-की के उल्लंघनों को मैनेज करने के लिए, अपने-आप माइग्रेट करने की सुविधा से जुड़ी समस्या को ठीक करना. (b/190113935)

वर्शन 2.4.0-alpha03

16 जून, 2021

androidx.room:room-*:2.4.0-alpha03 रिलीज़ हो गया है. वर्शन 2.4.0-alpha03 में ये कमियां हैं.

एपीआई में हुए बदलाव

  • रूम के MigrationTestHelper को अपडेट करें, ताकि एक नया कंस्ट्रक्टर एपीआई देकर, अपने-आप माइग्रेशन हो सके. यह एपीआई, डेटाबेस क्लास को टेस्ट करता है. इससे, runMigrationsAndValidate के दौरान, हेल्पर अपने-आप माइग्रेशन की सुविधा को उसी तरह जोड़ सकता है.

गड़बड़ियां ठीक की गईं

  • Apple के M1 चिप के साथ काम करने के लिए, Room की SQLite नेटिव लाइब्रेरी से जुड़ी समस्या को ठीक किया गया. (b/174695268

  • समस्या को ठीक किया गया है, जब @Transaction फ़ंक्शन के रिटर्न टाइप में कोई फ़्लो (I56ddd, b/190075899) होने पर रूम की गड़बड़ी नहीं दिखती थी

  • इंडेक्स से जुड़े अपने-आप माइग्रेट होने की सुविधा से जुड़ी समस्या को ठीक करना. b/177673291

डिपेंडेंसी से जुड़े अपडेट

  • Room में केएसपी की सुविधा अब केएसपी 1.5.10-1.0.0-beta01 पर निर्भर करती है. (1ecb11, b/160322705)

वर्शन 2.4.0-alpha02

5 मई, 2021

androidx.room:room-*:2.4.0-alpha02 रिलीज़ हो गया है. वर्शन 2.4.0-alpha02 में ये कमियां हैं.

एपीआई में हुए बदलाव

  • @ProvidedAutoMigrationSpec एक नया एपीआई है. इसका इस्तेमाल यह बताने के लिए किया जाता है कि AutoMigrationSpec को RoomDatabase.Builder#addAutoMigrationSpec() के ज़रिए रनटाइम पर उपलब्ध कराया जाएगा. इससे, डिपेंडेंसी इंजेक्शन फ़्रेमवर्क को ऐसी खास जानकारी देने में मदद मिलती है, जब उन्हें जटिल डिपेंडेंसी की ज़रूरत होती है.

गड़बड़ियां ठीक की गईं

  • अपने-आप माइग्रेट होने की सुविधा से जुड़ी एक समस्या को ठीक किया गया. इस समस्या की वजह से, @DatabaseView सही तरीके से फिर से नहीं बन रहे थे.

बाहरी योगदान

  • रूम के JournalMode.TRUNCATE में एक समस्या को ठीक किया गया है. इसमें InvalidationTracker कॉलबैक को कभी-कभी अमान्य तरीके से, बहुत देर से या कभी-कभी नहीं बुलाया जा रहा था. Uli Bubenheimer | bubenheimer@users.noreply.github.com (b/154040286) को धन्यवाद

वर्शन 2.4.0-alpha01

21 अप्रैल, 2021

androidx.room:room-*:2.4.0-alpha01 रिलीज़ हो गया है. 2.4.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • अपने-आप माइग्रेट होना: अब Room में, एपीआई की मदद से अपने-आप माइग्रेशन जनरेट करने की सुविधा उपलब्ध है. हालांकि, इसके लिए ज़रूरी है कि स्कीमा एक्सपोर्ट किए गए हों. रूम को यह बताने के लिए कि उसे अपने-आप माइग्रेट होने की सुविधा जनरेट करनी चाहिए, एक नई प्रॉपर्टी @Database#autoMigrations का इस्तेमाल करके, अलग-अलग वर्शन से अपने-आप माइग्रेट होने का एलान किया जा सकता है. जब Room को टेबल और कॉलम के नाम बदलने या मिटाने के बारे में ज़्यादा जानकारी चाहिए, तो @AutoMigration एनोटेशन, ऐसे इनपुट वाली स्पेसिफ़िकेशन क्लास का एलान कर सकता है. ज़्यादा जानकारी के लिए, @AutoMigration दस्तावेज़ देखें.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक करें जिसमें रूम के स्कीमा की पुष्टि करने वाले टूल की मदद से, अतिरिक्त ब्रैकेट वाले defaultValue की गलत तरीके से पुष्टि की जा रही थी. b/182284899

वर्शन 2.3.0

वर्शन 2.3.0

21 अप्रैल, 2021

androidx.room:room-*:2.3.0 रिलीज़ हो गया है. वर्शन 2.3.0 में ये कमियां शामिल हैं.

2.2.0 के बाद किए गए ज़रूरी बदलाव

  • एनम के लिए पहले से मौजूद सहायता: अगर कोई एनम नहीं दिया जाता है, तो रूम अब डिफ़ॉल्ट रूप से एनम से स्ट्रिंग और स्ट्रिंग से एनम टाइप कन्वर्टर का इस्तेमाल करेगा. अगर किसी एनम के लिए टाइप कन्वर्टर पहले से मौजूद है, तो Room डिफ़ॉल्ट कन्वर्टर के बजाय, उस कन्वर्टर का इस्तेमाल करेगा.
  • क्वेरी कॉलबैक: Room में अब एक सामान्य कॉलबैक एपीआई RoomDatabase.QueryCallback उपलब्ध है. यह तब काम आता है, जब क्वेरी लागू होने वाली हों. यह डीबग बिल्ड में लॉग करने के लिए भी काम का हो सकता है. कॉलबैक को RoomDatabase.Builder#setQueryCallback() की मदद से सेट किया जा सकता है.
  • पहले से पैकेज किए गए डेटा में सुधार: Room में अब एपीआई हैं, जिनकी मदद से इनपुट स्ट्रीम से पहले से पैकेज किए गए डेटा का इस्तेमाल करके डेटाबेस बनाया जा सकता है. इसकी मदद से, ऐसे मामलों में मदद मिलती है जब प्री-पैकेज डेटाबेस को gzip किया जाता है.
  • टाइप कन्वर्टर उपलब्ध कराना: Room में अब टाइप कन्वर्टर के इंस्टेंस उपलब्ध कराने के लिए एपीआई हैं, ताकि ऐप्लिकेशन उनके शुरू होने को कंट्रोल कर सके. Room में इस्तेमाल किए जाने वाले टाइप कन्वर्टर को मार्क करने के लिए, नए एनोटेशन @ProvidedTypeConverter का इस्तेमाल करें.
  • RxJava3 के साथ काम करना: Room अब RxJava3 टाइप के साथ काम करता है. RxJava2 की तरह ही, डीएओ के ऐसे तरीके भी बनाए जा सकते हैं जिनका रिटर्न टाइप Flowable, Single, Maybe, और Completable हो. इसके अलावा, RxJava3 के साथ काम करने के लिए एक नया आर्टफ़ैक्ट androidx.room:room-rxjava3 उपलब्ध है.
  • पेजिंग 3.0 के साथ काम करना: Room अब उन @Query एनोटेट किए गए तरीकों के लिए लागू करने की सुविधा देगा जिनका रिटर्न टाइप androidx.paging.PagingSource है.

वर्शन 2.3.0-rc01

24 मार्च, 2021

androidx.room:room-*:2.3.0-rc01 रिलीज़ हो गया है. 2.3.0-rc01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक समस्या को ठीक किया गया है, जिसकी वजह से Room के ज़रिए बनाई गई Coroutine Flow क्वेरी, निलंबित किए जा रहे withTransaction ब्लॉक में इस्तेमाल नहीं की जा सकती थीं. (I797bf)

वर्शन 2.3.0-beta03

10 मार्च, 2021

androidx.room:room-*:2.3.0-beta03 रिलीज़ हो गया है. 2.3.0-beta03 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • KSP के लिए इंक्रीमेंटल कंपाइलेशन की सुविधा जोड़ी गई. (I031c1, b/176453350)

गड़बड़ियां ठीक की गईं

  • मुख्य थ्रेड पर PagingSource बनाने पर ANR ट्रिगर होने की गड़बड़ी को ठीक किया गया है. (I42b74, b/181221318)
  • @ExperimentalRoomApi को 'पैकेज निजी' के बजाय 'सार्वजनिक' के तौर पर सेट किया गया. (b/181356119)

बाहरी योगदान

  • @Query एनोटेट किए गए डीएओ मैथड में, Room को POJO रिटर्न टाइप स्वीकार करने की अनुमति दें. हालांकि, इसके लिए ज़रूरी है कि मैथड को @SkipQueryVerification के साथ भी एनोटेट किया गया हो. रूम, क्वेरी के नतीजे को पीओजेओ रिटर्न टाइप में बदलने की पूरी कोशिश करेगा. यह ठीक उसी तरह करना होगा जैसे @RawQuery की जानकारी देने वाले डीएओ तरीके में किया जाता है. ‘Markus Riegel | hey@marcorei.com’ को धन्यवाद. (I45acb)

वर्शन 2.3.0-beta02

18 फ़रवरी, 2021

androidx.room:room-*:2.3.0-beta02 रिलीज़ हो गया है. वर्शन 2.3.0-beta02 में ये कमिट हैं.

नई सुविधाएं

  • Room में अब Kotlin सिंबल प्रोसेसिंग KSP के लिए, एक्सपेरिमेंट के तौर पर सहायता उपलब्ध है.

    KSP, KAPT की जगह है, जो Kotlin कंपाइलर पर मूल रूप से एनोटेशन प्रोसेसर चला सकती है. इससे बिल्ड में लगने वाला समय काफ़ी कम हो जाता है.

    KSP के साथ Room का इस्तेमाल करने के लिए, KSP Gradle प्लग इन लागू करें और अपनी बिल्ड फ़ाइल में kapt कॉन्फ़िगरेशन को ksp से बदलें. उदाहरण के लिए, kapt 'androidx.room:room-compiler:2.3.0-beta02' के बजाय ksp 'androidx.room:room-compiler:2.3.0-beta02' का इस्तेमाल करें. ज़्यादा जानकारी के लिए, KSP से जुड़ा दस्तावेज़ देखें.

    ध्यान दें कि KSP एक एक्सपेरिमेंटल सुविधा है. इसलिए, हमारा सुझाव है कि प्रोडक्शन कोड के लिए अब भी KAPT का इस्तेमाल करें. बिल्ड में लगने वाले समय में कमी सिर्फ़ तब लागू होती है, जब KAPT का इस्तेमाल करने वाले कोई अन्य प्रोसेसर न हो. पहले से मौजूद समस्याओं के बारे में जानने के लिए, b/160322705 देखें.

वर्शन 2.3.0-beta01

27 जनवरी, 2021

androidx.room:room-*:2.3.0-beta01 रिलीज़ हो गया है. वर्शन 2.3.0-beta01 में ये कमिट हैं.

नई सुविधाएं

  • अपने-आप बंद होने वाले डेटाबेस: रूम में अब ऐसे डेटाबेस बंद किए जा सकते हैं जिन्हें तय समय के बाद ऐक्सेस नहीं किया जाता. यह सुविधा एक्सपेरिमेंट के तौर पर उपलब्ध है. इसे चालू करने के लिए, RoomDatabase.Builder#setAutoCloseTimeout() बोलें. यह सुविधा, एक से ज़्यादा डेटाबेस वाले ऐप्लिकेशन के लिए काम की है.

गड़बड़ियां ठीक की गईं

  • उस समस्या को ठीक कर दिया गया है जहां @Update या @Delete तरीकों से अलग-अलग कॉन्फ़्लिक्ट स्ट्रेटजी वाली 'डीएओ' तरीके से, सिर्फ़ एक रणनीति के साथ कोड जनरेट होगा. इस तरह, पहले से तय की गई रणनीति को अनदेखा किया जा सकता है. (/I0b90d, b/176138543)

वर्शन 2.3.0-alpha04

16 दिसंबर, 2020

androidx.room:room-*:2.3.0-alpha04 रिलीज़ हो गया है. 2.3.0-alpha04 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Room अब सामान्य कॉलबैक एपीआई RoomDatabase.QueryCallback उपलब्ध कराता है. यह तब काम आता है, जब क्वेरी लागू होने वाली हों. यह डीबग बिल्ड में लॉग इन करने के लिए भी काम का हो सकता है. कॉलबैक को RoomDatabase.Builder#setQueryCallback() की मदद से सेट किया जा सकता है. (Iaa513, b/174478034, b/74877608)
  • रूम अब डिफ़ॉल्ट रूप से Enum से स्ट्रिंग में इस्तेमाल होगा. अगर कोई भी रूम नहीं दिया जाता है, तो रूम में Enum टाइप कन्वर्टर का इस्तेमाल हो जाएगा. अगर किसी एनम के लिए टाइप कन्वर्टर पहले से मौजूद है, तो Room डिफ़ॉल्ट कन्वर्टर के बजाय, उस कन्वर्टर का इस्तेमाल करेगा. (b/73132006)

आम समस्या

  • अगर Enum के लिए, पढ़ने के लिए एकतरफ़ा टाइप कन्वर्टर पहले से मौजूद है, तो हो सकता है कि Room गलती से, पहले से मौजूद स्ट्रिंग से Enum कन्वर्टर का इस्तेमाल कर दे. ऐसा शायद आपके काम का न हो. यह एक आम समस्या है. इसे दो-तरफ़ा कन्वर्टर बनाकर ठीक किया जा सकता है. देखें: b/175707691

गड़बड़ियां ठीक की गईं

  • एक समस्या को ठीक किया गया है. इसकी वजह से, नए JDK वर्शन में, Room में एनोटेशन की प्रोसेसिंग की सुविधा गलत तरीके से बंद हो जाती थी. (b/171387388)
  • एक से ज़्यादा क्लास लोडर का इस्तेमाल करने पर, जनरेट की गई क्लास को ढूंढने में रूम से जुड़ी समस्या ठीक की गई. ‘Serendipity | 892449346@qq.com’ को ठीक करने के लिए धन्यवाद! (b/170141113)
  • एक समस्या को ठीक किया गया है. इसकी वजह से, Kotlin @Dao में कोई ऐसी बेस क्लास होने पर, Room गलत कोड जनरेट करता था जिसका जेनरिक, JVM में प्राइमिटिव होते हैं. (b/160258066)

बाहरी योगदान

  • अगर WAL मोड चालू है और एपीआई 16 या उससे ज़्यादा है, तो Room अब डिफ़ॉल्ट रूप से beginTransactionNonExclusive का इस्तेमाल करेगा. ‘अहमद आई. खलील | ahmedibaraim स्थानli@gmail.com’! (b/126258791)

वर्शन 2.3.0-alpha03

14 अक्टूबर, 2020

androidx.room:room-*:2.3.0-alpha03 रिलीज़ हो गया है. वर्शन 2.3.0-alpha03 में ये कमियां हैं.

नई सुविधाएं

  • Room में अब टाइप कन्वर्टर के इंस्टेंस देने के लिए एपीआई हैं, ताकि ऐप्लिकेशन उनके शुरू होने को कंट्रोल कर सके. Room में इस्तेमाल किए जाने वाले टाइप कन्वर्टर को मार्क करने के लिए, नए एनोटेशन @ProvidedTypeConverter का इस्तेमाल करें. mzgreen yairobbe@gmail.com को धन्यवाद. (Ie4fa5, b/121067210)

  • Room में अब एपीआई हैं, जिनका इस्तेमाल करके, पहले से पैकेज किए गए डेटाबेस का इस्तेमाल करके डेटाबेस बनाया जा सकता है. यह डेटाबेस, इनपुट स्ट्रीम से पढ़ा जाता है. इससे, पहले से पैकेज किए गए डेटाबेस को जिप करने जैसे मामलों में मदद मिलती है. ‘Ahmed El-Helw ahmedre@gmail.com’ (3e6792, b/146911060) को धन्यवाद

एपीआई में हुए बदलाव

  • @ForeignKey एनोटेशन में वह टारगेट जोड़ा गया जो पहले मौजूद नहीं था. इस वजह से, @Entity एनोटेशन के बाहर इसका इस्तेमाल नहीं किया जा सका. (Iced1e)

  • RoomDatabase.java में मौजूद mCallbacks फ़ील्ड को अब छिपा दिया गया है. (d576cb, b/76109329)

गड़बड़ियां ठीक की गईं

  • TypeConverters दस्तावेज़ में अपडेट करें, ताकि यह साफ़ तौर पर बताया जा सके कि TypeConverters का इस्तेमाल सिर्फ़ कॉलम / फ़ील्ड को बदलने के लिए किया जा सकता है, पंक्तियों को नहीं. (I07c56, b/77307836)

  • DaoProcessor को अपडेट किया गया है, ताकि Kotlin "प्राइमिटिव" के साथ सामान्य सुपर टाइप वाले Dao पर कंपाइलर की गड़बड़ी को ठीक किया जा सके. (Ice6bb, b/160258066)

  • थ्रेडिंग को बेहतर तरीके से समझाने के लिए, ऑब्ज़र्वर के तरीकों को जोड़ने/हटाएं से जुड़े दस्तावेज़ को अपडेट करें (Ifd1d9, b/153948821)

  • Room में, rowid कॉलम का एलान करने वाली FTS टेबल की गलत तरीके से पुष्टि करने से जुड़ी समस्या को ठीक करना. (d62ebc, b/145858914)

बाहरी योगदान

  • टर्किश (5746e3) से जुड़ी, लोकल भाषा के अपरकेस/लोअरकेस से जुड़ी समस्याएं ठीक करना, b/68159494

  • Android Lollipop पर आने वाली समस्याओं से बचने के लिए, RoomDatabase में मौजूद ConcurrentHashMap को Collections.synchronizedMap() से बदलें (d1cfc7, b/162431855)

  • पहले से पैकेज किए गए DB को कॉपी करने के लिए, onOpenPrepackagedDatabase कॉलबैक जोड़ें. (I1ba74, b/148934423)

वर्शन 2.3.0-alpha02

22 जुलाई, 2020

androidx.room:room-*:2.3.0-alpha02 रिलीज़ हो गया है. 2.3.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • RxJava3 के साथ काम करना: Room अब RxJava3 टाइप के साथ काम करता है. RxJava2 की तरह ही, डीएओ के ऐसे तरीके भी बनाए जा सकते हैं जिनका रिटर्न टाइप Flowable, Single, Maybe, और Completable हो. इसके अलावा, RxJava3 के साथ काम करने के लिए एक नया आर्टफ़ैक्ट androidx.room:room-rxjava3 उपलब्ध है. (b/152427884)

एपीआई में हुए बदलाव

  • Kotlin ऑब्जेक्ट क्लास में @TypeConverter का एलान करने की सुविधा अब उपलब्ध है. (b/151110764)
  • रूम में एनोटेशन को क्रम से प्रोसेस करने का विकल्प, अब डिफ़ॉल्ट रूप से चालू है. (b/112110217)

वर्शन 2.3.0-alpha01

10 जून, 2020

androidx.room:room-*:2.3.0-alpha01 रिलीज़ हो गया है. 2.3.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • पेज 3.0 के लिए सहायता: रूम अब @Query व्याख्या किए गए उन तरीकों के लिए लागू करने की सुविधा को जनरेट करने में मदद करेगा जिनका रिटर्न टाइप androidx.paging.PagingSource है.

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

एपीआई में हुए बदलाव

  • @RewriteQueriesToDropUnusedColumns एक नई सुविधाजनक एनोटेशन है. इसकी मदद से रूम, किसी क्वेरी में ‘*’ प्रोजेक्शन को इस तरह फिर से लिखता है कि नतीजे में इस्तेमाल नहीं किए गए कॉलम हटा दिए जाएं.
  • प्रोसेसर के तौर पर room.expandProjection का इस्तेमाल अब नहीं किया जा सकता. स्टार प्रोजेक्शन के साथ रूम ऑप्टिमाइज़ करने वाली क्वेरी की जगह @RewriteQueriesToDropUnusedColumns का इस्तेमाल करें. ध्यान दें कि @RewriteQueriesToDropUnusedColumns, कॉलम के संघर्ष के समाधान room.expandProjection की जगह नहीं लेता. यह समाधान, रिटर्न टाइप के लिए दिया जाता है. इनमें @Embedded फ़ील्ड होते हैं.

गड़बड़ियां ठीक की गईं

  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, Room, इंक्रीमेंटल एनोटेशन प्रोसेसर को चालू करने के लिए इस्तेमाल किए गए JDK वर्शन का सही तरीके से पता नहीं लगा पाता था. ब्लेज़ सोलर (me@blaz.solar) (b/155215201) का धन्यवाद
  • Room अब एनोटेशन प्रोसेसर के साथ अपनी ANTLR डिपेंडेंसी को एम्बेड करता है, ताकि ANTLR का इस्तेमाल करने वाले दूसरे प्रोसेसर के वर्शन के साथ कोई समस्या न हो. (b/150106190)

वर्शन 2.2.6

वर्शन 2.2.6

16 दिसंबर, 2020

androidx.room:room-*:2.2.6 रिलीज़ हो गया है. 2.2.6 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक समस्या को ठीक किया गया है. इसकी वजह से, नए JDK वर्शन में, Room ऐनोटेशन की प्रोसेसिंग को गलत तरीके से बंद कर देता था. (b/171387388)

वर्शन 2.2.5

वर्शन 2.2.5

18 मार्च, 2020

androidx.room:room-*:2.2.5 रिलीज़ हो गया है. 2.2.5 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • MultiInstanceInvalidationService को directBootAware बनाएं. 'Mygod contact-git@mygod.be' (b/148240967) को धन्यवाद
  • एक से ज़्यादा इंस्टेंस अमान्य करने की सुविधा चालू होने और डेटाबेस में एफ़टीएस इकाई मौजूद होने पर, क्रैश होने की समस्या को ठीक किया गया. (b/148969394)
  • रूम एनोटेशन प्रोसेसर में, SQLite नेटिव लाइब्रेरी लोड करते समय होने वाली समस्या को ठीक किया गया है. इसकी वजह से कंपाइलर, पैरलल कंपाइलेशन की वजह से क्रैश हो सकता है. (b/146217083)

वर्शन 2.2.4

वर्शन 2.2.4

19 फ़रवरी, 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, और androidx.room:room-testing:2.2.4 जारी किए जाते हैं. 2.2.4 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • निलंबित किए जाने वाले लेन-देन की समस्या को ठीक किया गया. इसकी वजह से, अगर कोरूटीन, लेन-देन शुरू होने से पहले ही रद्द हो जाता है, तो उसके काम करना बंद कर दिया जाता है. (b/148181325)
  • JDK 9 का इस्तेमाल करके बिल्ड करते समय, @Generated का गलत इस्तेमाल होने से जुड़ी समस्या को ठीक किया गया. (b/146538330)
  • एक समस्या को ठीक किया गया है. इसकी वजह से, Kotlin में DAO इंटरफ़ेस में कोई फ़ंक्शन होने पर, Room गलत कोड जनरेट करता था. (b/146825845)

वर्शन 2.2.3

वर्शन 2.2.3

18 दिसंबर, 2019

androidx.room:room-*:2.2.3 रिलीज़ हो गया है. 2.2.3 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, Room किसी ऐसे डेटाबेस की पुष्टि नहीं कर पाता था जिसे माइग्रेट नहीं किया गया था और जिसके स्कीमा में इंडेक्स के साथ लेगसी हैश शामिल था. (b/139306173)

वर्शन 2.2.2

वर्शन 2.2.2

20 नवंबर, 2019

androidx.room:room-*:2.2.2 रिलीज़ हो गया है. 2.2.2 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक से ज़्यादा रिलेशनशिप वाली 999 से ज़्यादा लाइनों को इकट्ठा करने पर, Room से रिलेशनशिप वाले आइटम के लिए कोई वैल्यू नहीं मिलती थी. इस गड़बड़ी को ठीक कर दिया गया है. (b/143105450)

वर्शन 2.2.1

वर्शन 2.2.1

23 अक्टूबर, 2019

androidx.room:room-*:2.2.1 रिलीज़ हो गया है. 2.2.1 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, कंपाइलर के विकल्पexpandProjection के चालू होने पर, Room CURSOR_MISMATCH के बारे में गलत चेतावनी देता था. (b/140759491)
  • कंपाइलेशन के दौरान क्वेरी की पुष्टि करने के लिए इस्तेमाल की जाने वाली नेटिव लाइब्रेरी को मैनेज करने के लिए, फिर से कोशिश करने का तरीका जोड़ा गया.

वर्शन 2.2.0

वर्शन 2.2.0

9 अक्टूबर, 2019

androidx.room:room-*:2.2.0 रिलीज़ हो गया है. 2.2.0 वर्शन में ये बदलाव शामिल हैं.

2.1.0 वर्शन के बाद किए गए ज़रूरी बदलाव

  • पहले से पैकेज किया गया डेटाबेस: पहले से भरी गई डेटाबेस फ़ाइल के तौर पर, RoomDatabase.Builder में दो नए एपीआई अब RoomDatabase बनाने के लिए उपलब्ध हैं. createFromAsset() तब इस्तेमाल किया जाता है, जब पहले से जानकारी भरी हुई डेटाबेस फ़ाइल, APK के ऐसेट फ़ोल्डर में हो. वहीं, createFromFile() तब इस्तेमाल किया जाता है, जब फ़ाइल किसी भी जगह पर हो. इन एपीआई का इस्तेमाल करने से, डेटा मिटाने वाले माइग्रेशन का तरीका बदल जाता है. जैसे, फ़ॉलबैक माइग्रेशन के दौरान, Room पहले से भरे डेटाबेस को फिर से कॉपी करने की कोशिश करेगा. अगर डेटाबेस उपलब्ध नहीं है, तो वह सभी टेबल को हटाकर फिर से बना देगा. b/62185732
  • स्कीमा की डिफ़ॉल्ट वैल्यू: @ColumnInfo में अब एक नई प्रॉपर्टी defaultValue है. इसका इस्तेमाल, किसी कॉलम की डिफ़ॉल्ट वैल्यू तय करने के लिए किया जा सकता है. डिफ़ॉल्ट वैल्यू, डेटाबेस स्कीमा का हिस्सा होती हैं. तय किए जाने पर, माइग्रेशन के दौरान उनकी पुष्टि की जाएगी. b/64088772
  • कई-से-कई रिलेशन: @Relation में अब एक नई प्रॉपर्टी associateBy है, जो एक नया एनोटेशन @Junction लेती है. इसका इस्तेमाल, किसी ऐसे रिलेशन को बताने के लिए किया जाता है जिसे जंक्शन टेबल (इसे जॉइन टेबल भी कहा जाता है) के ज़रिए पूरा करना ज़रूरी है. b/69201917
  • एक-से-एक रिलेशन: @Relation के साथ एनोटेट किए गए POJO फ़ील्ड में, List या Set टाइप की पाबंदी हटा दी गई है. इससे, एक वैल्यू वाले रिलेशन को दिखाने की सुविधा मिलती है. b/62905145
  • टारगेट इकाई: डीएओ एनोटेशन @Insert, @Update, और @Delete में अब एक नई प्रॉपर्टी targetEntity है. इसकी मदद से, उस टारगेट टेबल की जानकारी दी जा सकती है जिस पर डीएओ का तरीका लागू करना है. इससे उन DAO तरीकों के पैरामीटर, मनमुताबिक POJO हो सकते हैं. इन्हें आंशिक इकाइयों के तौर पर समझा जाएगा. इसका इस्तेमाल करके, डेटा को कुछ हिस्सों में डाला, मिटाया, और अपडेट किया जा सकता है. b/127549506
  • कोरूटीन फ़्लो: @Query डीएओ के तरीके अब Flow<T> के रिटर्न टाइप के हो सकते हैं. अगर क्वेरी में ऑब्ज़र्व करने वाली टेबल अमान्य हो जाती हैं, तो नतीजे के तौर पर दिखने वाला फ़्लो, वैल्यू का एक नया सेट फिर से जनरेट करेगा. Channel<T> रिटर्न टाइप के साथ DAO फ़ंक्शन का एलान करना गड़बड़ी है. इसके बजाय, Room आपको Flow का इस्तेमाल करने का सुझाव देता है. इसके बाद, Flow को Channel में बदलने के लिए, आस-पास मौजूद फ़ंक्शन का इस्तेमाल करें. b/130428884
  • Gradle इंक्रीमेंटल एनोटेशन प्रोसेसर: Room अब Gradle का एक अलग एनोटेशन प्रोसेसर है. साथ ही, प्रोसेसर के विकल्प room.incremental की मदद से, इंक्रीमेंट करने की सुविधा चालू की जा सकती है. ज़्यादा जानकारी के लिए, रूम कंपाइलर के विकल्प देखें. अगर आपको कोई समस्या आती है, तो कृपया यहां गड़बड़ी की शिकायत करें. हम आने वाले समय में, स्टेबल वर्शन में डिफ़ॉल्ट रूप से, ज़्यादा से ज़्यादा सदस्य जोड़ने की सुविधा चालू करने पर काम कर रहे हैं. b/112110217
  • अनुमान लगाना: एक नया एक्सपेरिमेंटल कंपाइलर विकल्प room.expandProjection जोड़ा गया, जिसकी वजह से रूम, स्टार प्रोजेक्शन के साथ क्वेरी को फिर से लिख पाता है. इसमें सिर्फ़ रिटर्न टाइप POJO में कॉलम शामिल होते हैं. उदाहरण के लिए, @Query("SELECT * FROM Song") वाले डीएओ मैथड के लिए, जो सिर्फ़ दो फ़ील्ड वाला SongIdAndTitle नाम का पीओजेओ रिटर्न करता है. इसके बाद, Room क्वेरी को SELECT id, title FROM Song में फिर से लिख देगा, ताकि रिटर्न टाइप को पूरा करने के लिए कॉलम का कम से कम सेट फ़ेच किया जा सके. ऐसा करने से, क्वेरी से ऐसे अतिरिक्त कॉलम दिखने पर CURSOR_MISMATCH चेतावनी हट जाती है जो रिटर्न करने वाले POJO टाइप के किसी भी फ़ील्ड से मैच नहीं करते.

वर्शन 2.2.0-rc01

5 सितंबर, 2019

androidx.room:room:2.2.0-rc01 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

2.2.0-beta01 रूम से कोई सार्वजनिक बदलाव नहीं किया गया है.

वर्शन 2.2.0-beta01

22 अगस्त, 2019

androidx.room:room-*:2.2.0-beta01 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

गड़बड़ियां ठीक की गईं

  • एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, कोरूटीन फ़्लो क्वेरी कुछ समय बाद नई वैल्यू फिर से भेजना बंद कर देती थी. (b/139175786)
  • उस गड़बड़ी को ठीक किया गया है जहां रूम, एक ऐसे डेटाबेस को खोलते समय लेगसी स्कीमा हैश कोड स्वीकार नहीं करता जिसमें रूम 1.0 के बाद से माइग्रेशन नहीं हुआ था. इस वजह से, अमान्य स्कीमा की वजह से रनटाइम क्रैश होता था. (b/139306173)

वर्शन 2.2.0-alpha02

7 अगस्त, 2019

androidx.room:room-*:2.2.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.

नई सुविधाएं

  • कोरूटीन फ़्लो: @Query डीएओ मैथड अब रिटर्न टाइप Flow<T> के हो सकते हैं. अगर क्वेरी में निगरानी की जा रही टेबल अमान्य हो जाती हैं, तो दिखाया गया फ़्लो वैल्यू का नया सेट फिर से दिखाएगा. Channel<T> रिटर्न टाइप के साथ DAO फ़ंक्शन का एलान करना गड़बड़ी है. इसके बजाय, Room आपको Flow का इस्तेमाल करने का सुझाव देता है. इसके बाद, Flow को Channel में बदलने के लिए, आस-पास मौजूद फ़ंक्शन का इस्तेमाल करें. b/130428884
  • प्रोजेक्शंस को बड़ा करना: एक्सपेरिमेंट के तौर पर उपलब्ध कंपाइलर का एक नया विकल्प room.expandProjection जोड़ा गया है. इसकी मदद से, Room किसी क्वेरी को स्टार प्रोजेक्शन के साथ फिर से लिखता है, ताकि सिर्फ़ रिटर्निंग टाइप POJO में कॉलम शामिल हों. उदाहरण के लिए, @Query("SELECT * FROM Song") वाले डीएओ मैथड के लिए, जो सिर्फ़ दो फ़ील्ड वाला SongIdAndTitle नाम का पीओजेओ रिटर्न करता है. इसके बाद, Room क्वेरी को SELECT id, title FROM Song में फिर से लिख देगा, ताकि रिटर्न टाइप को पूरा करने के लिए कॉलम का कम से कम सेट फ़ेच किया जा सके. इससे CURSOR_MISMATCH चेतावनी नहीं दिखती. यह चेतावनी तब दिखती है, जब क्वेरी ऐसे अतिरिक्त कॉलम दिखाती है जो रिटर्न किए गए POJO टाइप के किसी फ़ील्ड से मेल नहीं खाते.
  • onDestructiveMigrate, RoomDatabase.Callback में एक नया कॉलबैक एपीआई है. इसे तब इस्तेमाल किया जाता है, जब रूम किसी डेटाबेस को नुकसान पहुंचाए बिना माइग्रेट करता है. b/79962330

गड़बड़ियां ठीक की गईं

  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, फ़ील्ड को सुरक्षित करने पर, Room किसी तरीके को फ़ील्ड सेटर के तौर पर इस्तेमाल करके गलत कोड जनरेट करता था. b/136194628
  • एक से ज़्यादा इंस्टेंस को अमान्य करने की सुविधा चालू होने और invalidationService बंद होने पर, InvalidationTracker की दूसरी प्रोसेस में एनपीई (नॉन-पर्सिस्टेंट एलिमेंट) मिलने की गड़बड़ी को ठीक किया गया. b/137454915
  • गड़बड़ी को ठीक किया गया. इसकी वजह से रूम, @RawQuery के साथ एनोटेट किए गए इनहेरिट किए गए सस्पेंड फ़ंक्शन के रिटर्न टाइप की सही पहचान नहीं कर पाता था. b/137878827
  • @Relation के लिए जनरेट किए गए कोड को अपडेट किया गया. ऐसा तब किया गया, जब मिलती-जुलती कुंजी का टाइप, तुलना की जा सकने वाली ByteBuffer का इस्तेमाल करने के लिए, BLOB था. b/137881998
  • एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, Room में @Insert, @Update, और @Delete के कुछ इकाई पैरामीटर के तौर पर इस्तेमाल किए गए POJOs पर सेटर मौजूद न होने की शिकायत होती थी. b/138664463
  • एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, @Entity के ज़रिए किसी ऐसे कॉलम के लिए, गटर और सेटर मौजूद न होने की शिकायत की जाती थी जिसे अनदेखा किया गया था. ऐसा तब होता था, जब इकाई क्लास का इस्तेमाल कुछ DAO तरीकों में किया जाता था. b/138238182
  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, Room नाम वाले बाइंडिंग आर्ग्युमेंट को पोज़िशनल आर्ग्युमेंट में सही तरीके से बदल नहीं पाता था. इस वजह से, फिर से इस्तेमाल किए गए पैरामीटर वाली क्वेरी को लागू करने पर, रनटाइम एक्सप्शन होता था. b/137254857

वर्शन 2.2.0-alpha01

10 जुलाई, 2019

नई सुविधाएं

  • पहले से पैकेज किया गया डेटाबेस: पहले से भरी गई डेटाबेस फ़ाइल के तौर पर, RoomDatabase.Builder में दो नए एपीआई अब RoomDatabase बनाने के लिए उपलब्ध हैं. createFromAsset() तब इस्तेमाल किया जाता है, जब पहले से जानकारी भरी हुई डेटाबेस फ़ाइल, APK के ऐसेट फ़ोल्डर में हो. वहीं, createFromFile() तब इस्तेमाल किया जाता है, जब फ़ाइल किसी भी जगह पर हो. इन एपीआई का इस्तेमाल करने से, नुकसान पहुंचाने वाले माइग्रेशन का व्यवहार भी बदल जाता है. जैसे, फ़ॉलबैक माइग्रेशन के दौरान, रूम, पहले से भरे गए डेटाबेस को उपलब्ध होने पर उसे दोबारा कॉपी करने की कोशिश करेगा. ऐसा न करने पर, यह सभी टेबल को छोड़कर, फिर से बनाने की कोशिश करेगा.b/62185732
  • स्कीमा की डिफ़ॉल्ट वैल्यू: @ColumnInfo में अब एक नई प्रॉपर्टी defaultValue है. इसका इस्तेमाल, किसी कॉलम की डिफ़ॉल्ट वैल्यू तय करने के लिए किया जा सकता है. डिफ़ॉल्ट वैल्यू, डेटाबेस स्कीमा का हिस्सा होती हैं. तय किए जाने पर, माइग्रेशन के दौरान उनकी पुष्टि की जाएगी. b/64088772

    ध्यान दें: अगर आपके डेटाबेस स्कीमा में पहले से ही डिफ़ॉल्ट वैल्यू मौजूद हैं, जैसे कि ALTER TABLE x ADD COLUMN y INTEGER NOTNULL DEFAULT z के ज़रिए जोड़ी गई वैल्यू, और आपको उन कॉलम में @ColumnInfo के ज़रिए डिफ़ॉल्ट वैल्यू तय करनी हैं, तो आपको बिना गिनती वाली डिफ़ॉल्ट वैल्यू की पुष्टि करने के लिए, माइग्रेशन की जानकारी देनी पड़ सकती है. ज़्यादा जानकारी के लिए, रूम को माइग्रेट करना देखें.

  • एक से ज़्यादा आइटम के बीच के संबंध: @Relation में अब एक नई प्रॉपर्टी associateBy है, जो एक नया एनोटेशन @Junction लेती है. इसका इस्तेमाल, किसी ऐसे संबंध के बारे में बताने के लिए किया जाता है जिसे जंक्शन टेबल (जिसे जॉइन टेबल भी कहा जाता है) के ज़रिए पूरा करना ज़रूरी है. b/69201917
  • एक-से-एक रिलेशन: @Relation के साथ एनोटेट किए गए POJO फ़ील्ड में, List या Set टाइप की पाबंदी हटा दी गई है. इससे, एक वैल्यू वाले रिलेशन को दिखाने की सुविधा मिलती है. b/62905145
  • टारगेट इकाई: डीएओ एनोटेशन @Insert, @Update, और @Delete में अब एक नई प्रॉपर्टी targetEntity है. इसकी मदद से, उस टारगेट टेबल की जानकारी दी जा सकती है जिस पर डीएओ का तरीका लागू करना है. इससे, उन DAO तरीकों के पैरामीटर, मनमुताबिक POJO हो सकते हैं. इन्हें आंशिक इकाइयों के तौर पर समझा जाएगा. व्यावहारिक तौर पर, यह कुछ हिस्से को जोड़ने, मिटाने, और अपडेट करने की अनुमति देता है. b/127549506
  • Gradle इंक्रीमेंटल एनोटेशन प्रोसेसर: Room अब Gradle का एक अलग एनोटेशन प्रोसेसर है. साथ ही, प्रोसेसर के विकल्प room.incremental की मदद से, इंक्रीमेंट करने की सुविधा चालू की जा सकती है. ज़्यादा जानकारी के लिए, रूम कंपाइलर के विकल्प देखें. अगर आपको कोई समस्या आती है, तो कृपया यहां गड़बड़ी की शिकायत करें. हम आने वाले समय में, स्टेबल वर्शन में डिफ़ॉल्ट रूप से ज़्यादा से ज़्यादा सदस्य जोड़ने की सुविधा चालू करने जा रहे हैं. b/112110217

गड़बड़ियां ठीक की गईं

  • जब क्वेरी पूरी होने से पहले ही उसकी Rx स्ट्रीम को डिस्पोज कर दिया जाता है, तो रूम ग्लोबल गड़बड़ी हैंडलर को EmptySetResultException नहीं भेजेगा. b/130257475
  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, जब @RawQuery के साथ एनोटेट किए गए suspend DAO फ़ंक्शन का रिटर्न टाइप नहीं होता था, तब Room गड़बड़ी का गलत मैसेज दिखाता था. b/134303897
  • Room अब रॉ टाइप के साथ डीएओ अडैप्टर जनरेट नहीं करेगा. b/135747255

वर्शन 2.1.0

वर्शन 2.1.0

13 जून, 2019

Room 2.1.0 रिलीज़ किया गया है. इसमें 2.1.0-rc01 के मुकाबले कोई बदलाव नहीं किया गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

2.0.0 के बाद किए गए अहम बदलाव

  • एफ़टीएस: अब रूम, एफ़टीएस3 या एफ़टीएस4 टेबल को मैप करने वाली इकाइयों के साथ काम करता है. @Entity के साथ एनोटेट की गई क्लास को अब @Fts3 या @Fts4 के साथ भी एनोटेट किया जा सकता है. इससे, मैपिंग की गई फ़ुल-टेक्स्ट सर्च टेबल के साथ क्लास का एलान किया जा सकता है. एनोटेशन के तरीकों की मदद से, एफ़टीएस को ज़्यादा पसंद के मुताबिक बनाने के विकल्प उपलब्ध हैं.
  • व्यू: Room में अब किसी क्लास को स्टोर की गई क्वेरी के तौर पर घोषित किया जा सकता है. इसे @DatabaseView एनोटेशन का इस्तेमाल करके, व्यू भी कहा जाता है.
  • कोरूटीन: डीएओ मैथड अब सस्पेंड फ़ंक्शन हो सकते हैं. इस सुविधा का फ़ायदा पाने के लिए, अपनी डिपेंडेंसी में room-ktx शामिल करें. ktx आर्टफ़ैक्ट, कोरूटीन में डेटाबेस लेन-देन करने के लिए, एक्सटेंशन फ़ंक्शन RoomDatabase.withTransaction भी उपलब्ध कराता है.
  • अपने-आप लागू होने वाली वैल्यू: Room में अब AutoValue एनोटेशन वाली क्लास को इकाइयों और पीओजेओ के तौर पर दिखाने की सुविधा है. रूम के एनोटेशन @PrimaryKey, @ColumnInfo, @Embedded, और @Relation को अब अपने-आप वैल्यू वाले एनोटेट किए गए क्लास के ऐब्स्ट्रैक्ट तरीकों में दिखाया जा सकता है. ध्यान दें कि इन एनोटेशन के साथ @CopyAnnotations का इस्तेमाल भी करना होगा, ताकि Room उन्हें सही तरीके से समझ सके.
  • अतिरिक्त एसिंक्रोनस सपोर्ट: @Insert, @Delete या @Update के साथ एनोटेट किए गए डीएओ तरीके और @Query जिनमें INSERT, DELETE या UPDATE स्टेटमेंट शामिल हैं, अब Rx रिटर्न टाइप Completable, Single, Maybe, और Guava के रिटर्न टाइप ListenableFuture के साथ काम करते हैं. साथ ही, ये तरीके सस्पेंड करने के फ़ंक्शन भी हो सकते हैं.
  • enableMultiInstanceInvalidation, RoomDatabase.Builder में एक नया एपीआई है. इसका इस्तेमाल करके, एक ही डेटाबेस फ़ाइल का इस्तेमाल करके, RoomDatabase के कई इंस्टेंस में डेटा अमान्य किया जा सकता है.
  • fallbackToDestructiveMigrationOnDowngrade, RoomDatabase.Builder में एक नया एपीआई है. यह डेटाबेस को अपने-आप फिर से बनाता है, अगर डेटाबेस का वर्शन कम हो जाता है.
  • ignoredColumns, @Entity एनोटेशन में मौजूद एक नया एपीआई है. इसका इस्तेमाल, नाम के हिसाब से अनदेखा किए गए फ़ील्ड की सूची बनाने के लिए किया जा सकता है.
  • Room अब डेटा क्लास में Kotlin के प्राइमरी कन्स्ट्रक्टर का सही तरीके से इस्तेमाल करेगा. इससे, प्रॉपर्टी को vars के तौर पर एलान करने की ज़रूरत नहीं पड़ेगी.

वर्शन 2.1.0-rc01

29 मई, 2019

गड़बड़ियां ठीक की गईं

  • रूम को शुरू करने से जुड़ी एक गड़बड़ी को ठीक किया गया. यह गड़बड़ी, पहले से सेट अप किए गए temp_store कॉन्फ़िगरेशन की वजह से हो सकती है. b/132602198
  • SQLite 3.27.0 और उसके बाद के वर्शन का इस्तेमाल करने वाले लोगों के लिए, डबल कोट के इस्तेमाल से जुड़ी चेतावनी को ठीक किया गया. b/131712640
  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, एक साथ कई अमान्य होने की जांच होने पर, InvalidationTracker क्रैश हो जाता था. b/133457594

वर्शन 2.1.0-beta01

7 मई, 2019

androidx.room 2.1.0-beta01 को 2.1.0-alpha07 से बिना किसी बदलाव के रिलीज़ किया गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

वर्शन 2.1.0-alpha07

25 अप्रैल, 2019

एपीआई / व्यवहार में बदलाव

  • एक्सटेंशन फ़ंक्शन RoomDatabase.withTransaction को बदल दिया गया है, ताकि अब CoroutineScope को रिसीवर के तौर पर इस्तेमाल करने वाला फ़ंक्शन ब्लॉक न लिया जा सके. इससे, लेन-देन ब्लॉक में एक साथ कई काम चलाने के लिए ज़रूरी अतिरिक्त coroutineScope { } रैपर को स्किप करने से रोका जा सकता है.

गड़बड़ियां ठीक की गईं

  • उस गड़बड़ी को ठीक किया गया है जहां रूम उस Kotlin DAO फ़ंक्शन के लिए, TypeConverter से मैच नहीं हो पाता है जिसमें कलेक्शन टाइप का पैरामीटर होता है. b/122066791

वर्शन 2.1.0-alpha06

22 मार्च, 2019

एपीआई / व्यवहार में बदलाव

  • असाइन किए गए लेन-देन की क्वेरी अब इस तरह से क्रम में लगाई जाती हैं कि Room, डेटाबेस लेन-देन को पूरा करने के लिए एक से ज़्यादा थ्रेड का इस्तेमाल न करे. RoomDatabase.Builder.setTransactionExecutor(Executor) को जोड़ा गया था, ताकि लेन-देन के लिए इस्तेमाल किए जाने वाले एक्सेक्यूटर को कॉन्फ़िगर किया जा सके.
  • RoomDatabase.runInTransaction(Callable) अब जांचे गए अपवादों को रनटाइम अपवाद में रैप नहीं करेगा. b/128623748

गड़बड़ियां ठीक की गईं

  • गड़बड़ी को ठीक किया गया है. अगर कॉन्टेंट टेबल और बाहरी कॉन्टेंट की एफ़टीएस टेबल, दोनों के लिए ऑब्ज़र्वर को ऑब्ज़र्वर के साथ जोड़ा जाता है, तो अमान्य ट्रैकर के लिए इस्तेमाल होने वाली टेबल को मॉनिटर करना बंद हो जाता है. b/128508917
  • SQLite 3.24.0 से मैच करने के लिए, रूम के SQLite व्याकरण को अपडेट किया गया. b/110883668

वर्शन 2.1.0-alpha05

13 मार्च, 2019

नई सुविधाएं

  • RoomDatabase.withTransaction एक्सटेंशन फ़ंक्शन, आपको कोरूटीन में डेटाबेस के लेन-देन सुरक्षित तरीके से करने की अनुमति देता है. room-ktx आर्टफ़ैक्ट में, कोरूटीन के साथ-साथ रूम एक्सटेंशन फ़ंक्शन उपलब्ध हैं.
  • @Transaction के साथ एनोटेट किए गए नॉन-ऐब्स्ट्रैक्ट डीएओ मैथड, अब सस्पेंड फ़ंक्शन हो सकते हैं. b/120241587

एपीआई / व्यवहार में बदलाव

  • अन्य androidx आर्टफ़ैक्ट के नाम जैसा ही नाम रखने के बाद, आर्टफ़ैक्ट room-coroutines का नाम बदलकर room-ktx कर दिया गया है.
  • RoomDatabase में beginTransaction, setTransactionSuccessful, और endTransaction को हटा दिया गया है. अब इनके बजाय runInTransaction और room-ktx एक्सटेंशन फ़ंक्शन withTransaction का इस्तेमाल किया जा सकता है.

गड़बड़ियां ठीक की गईं

  • अगर टोकनाइज़ेशनर का इस्तेमाल किया गया था, तो SIMPLE से हुई गड़बड़ी की वजह से, टोकनाइज़र आर्ग्युमेंट हट रहे थे, इस गड़बड़ी को ठीक किया गया. b/125427014
  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, Room उन पैरामीटर वाले निलंबित फ़ंक्शन की सही तरीके से पहचान नहीं कर पाता था जिनका टाइप इनर क्लास था. b/123767877
  • एक गड़बड़ी को ठीक किया गया है. इसमें, INSERT, UPDATE या DELETE स्टेटमेंट वाले @Query डीएओ मेथड को, मुख्य थ्रेड में क्वेरी तैयार करने में देरी हो रही थी. b/123695593
  • कुछ गड़बड़ियों को ठीक किया गया है. इनकी वजह से, Room कुछ निलंबन फ़ंक्शन के लिए गलत कोड जनरेट करता था. b/123466702 और b/123457323
  • एक गड़बड़ी को ठीक किया गया है. इसमें, जनरेट किए गए कोड में, इस्तेमाल नहीं किए जाने वाले तरीकों को सही तरीके से नहीं दबाया जा रहा था. b/117602586
  • androidx.sqlite की Room डिपेंडेंसी को 1.0.2 पर अपडेट किया गया है. इसमें, खराब डेटाबेस को सही तरीके से मैनेज करने के लिए सुधार किए गए हैं. b/124476912

आम समस्याएं

  • कमरा 2.1.0-alpha05, kotlinx-metadata-jvm आर्टफ़ैक्ट पर निर्भर करता है. यह आर्टफ़ैक्ट फ़िलहाल Maven Central (KT-27991) में उपलब्ध नहीं है. maven { url "https://kotlin.bintray.com/kotlinx/" } को अपने प्रोजेक्ट डेटा स्टोर करने की जगहों में जोड़कर, इस डिपेंडेंसी को हल किया जा सकता है.

वर्शन 2.1.0-alpha04

25 जनवरी, 2019

नई सुविधाएं

  • @Query वाले डीएओ मैथड, जिनमें INSERT, UPDATE या DELETE स्टेटमेंट शामिल हैं वे अब असाइनिक टाइप Single, Mayble, Completable, और ListenableFuture दिखा सकते हैं. इसके अलावा, ये सस्पेंड फ़ंक्शन भी हो सकते हैं. b/120227284

एपीआई / व्यवहार में बदलाव

  • अगर @Transaction के साथ एनोटेट किया गया कोई ऐसा डीएओ मैथड, जो ऐब्स्ट्रैक्ट नहीं है, Single, Mayble, Completable, LiveData या ListenableFuture जैसे असाइनिक टाइप दिखाता है, तो Room अब गड़बड़ी का मैसेज दिखाएगा. लेन-देन पर सिर्फ़ थ्रेड की सुविधा होती है. इस वजह से, रूम के लिए किसी ऐसे फ़ंक्शन से लेन-देन शुरू और खत्म करना मुमकिन नहीं है जो अलग-अलग थ्रेड में क्वेरी कर सकता है. b/120109336
  • OnConflictStrategy.FAIL और OnConflictStrategy.ROLLBACK को @Deprecated के तौर पर मार्क किया गया है, क्योंकि वे Android की मौजूदा SQLite बाइंडिंग के साथ ठीक से काम नहीं करते. b/117266738

गड़बड़ियां ठीक की गईं

  • एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, अगर DAO का तरीका एक निलंबित फ़ंक्शन था, तो Room, रिटर्न टाइप के TypeConverter का सही तरीके से इस्तेमाल नहीं करता था. b/122988159
  • वह गड़बड़ी ठीक की गई है जिसमें रूम, इनहेरिट किए गए सस्पेंड फ़ंक्शन को गलती से, सस्पेंड नहीं करने वाले फ़ंक्शन के तौर पर पहचान लेता था. b/122902595
  • एक बग को ठीक किया गया है. इसकी वजह से, जब कोई @Embedded फ़ील्ड पैरंट क्लास में होता था और उसका इस्तेमाल एक से ज़्यादा चाइल्ड क्लास में किया जाता था, तो Room गलत कोड जनरेट करता था. b/121099048
  • beginTransaction() और endTransaction() के बीच डीएओ के सस्पेंड फ़ंक्शन को लागू करने पर, डेटाबेस में डेडलॉक होने की समस्या को ठीक किया गया. b/120854786

वर्शन 2.1.0-alpha03

4 दिसंबर, 2018

एपीआई में हुए बदलाव

  • @Fts3/@Fts4 में FTS tokenizer अब Enum के बजाय स्ट्रिंग लेता है. इससे Room, कस्टम टोकेनेटर का इस्तेमाल कर सकता है. FtsOptions में पहले से मौजूद टोकनाइज़र, अब भी स्ट्रिंग कॉन्सटेंट के तौर पर बताए गए हैं. b/119234881

नई सुविधाएं

  • कोरूटीन: डीएओ मैथड अब सस्पेंड फ़ंक्शन हो सकते हैं. Room में सस्पेंड करने की सुविधाओं के साथ काम करने के लिए, room-coroutines नाम का नया आर्टफ़ैक्ट रिलीज़ किया गया है. b/69474692
  • @Insert, @Delete या @Update के साथ एनोटेट किए गए डीएओ मैथड, अब रिटर्न टाइप के तौर पर ListenableFuture के साथ काम करते हैं. b/119418331

गड़बड़ियां ठीक की गईं

  • एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, Room @Entity की ignoredColumns प्रॉपर्टी में कॉलम के साथ कन्स्ट्रक्टर ढूंढने की कोशिश करता था. b/119830714
  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से रूम, जनरेट किए गए डीएओ पैरामीटर को फ़ाइनल के तौर पर मार्क नहीं करता. b/118015483
  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, खास सिंबल वाली क्वेरी में गड़बड़ी की रिपोर्ट करने पर, Room का प्रोसेसर क्रैश हो जाता था. b/119520136
  • उस गड़बड़ी को ठीक किया गया है जहां रूम, IN एक्सप्रेशन के आर्ग्युमेंट के तौर पर, अन्य Collection लागू करने के तरीकों को अस्वीकार कर देता था. b/119884035
  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, Room से मिले LiveData को हमेशा के लिए ऑब्ज़र्व करने पर, गै़रबैज़ी इकट्ठा हो जाती थी. इस वजह से, नया डेटा नहीं मिलता था. b/74477406
  • लॉक के विवाद को कम करने के लिए, RoomDatabase के 'बंद करें' लॉक को अपडेट किया गया. b/117900450

वर्शन 2.1.0-alpha02

30 अक्टूबर, 2018

नई सुविधाएं

  • @Relation में @DatabaseView का रेफ़रंस देने के लिए सहायता जोड़ी गई. b/117680932

गड़बड़ियां ठीक की गईं

  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, Rx रिटर्न टाइप से सदस्यता लेने और उसे हटाने पर, Room मुख्य थ्रेड में डिस्क I/O करता था. b/117201279
  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, Room को Kotlin इकाई क्लास में मौजूद फ़ील्ड के लिए सही टाइप कन्वर्टर नहीं मिल पाता था. b/111404868
  • एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, Room किसी DAO इंटरफ़ेस को लागू करने के लिए गलत कोड जनरेट करता था. इस इंटरफ़ेस में Kotlin का ऐसा डिफ़ॉल्ट तरीका होता था जिसमें कोई आर्ग्युमेंट नहीं होता. b/117527454
  • Room के SQLite ग्रामर पार्सर को अपडेट किया गया. इससे, परफ़ॉर्मेंस से जुड़ी एक समस्या ठीक हो गई है, जिसकी वजह से बिल्ड में ज़्यादा समय लगता था. b/117401230

वर्शन 2.1.0-alpha01

8 अक्टूबर, 2018

नई सुविधाएं

  • एफ़टीएस: Room में अब FTS3 या FTS4 टेबल की मैपिंग वाली इकाइयां काम करती हैं. @Entity से एनोटेट की गई क्लास को अब @Fts3 या @Fts4 से भी एनोटेट किया जा सकता है. इससे, मैपिंग की गई फ़ुल-टेक्स्ट सर्च टेबल की मदद से क्लास के बारे में जानकारी दी जा सकती है. एनोटेशन के तरीकों से, FTS को ज़्यादा पसंद के मुताबिक बनाने के विकल्प उपलब्ध हैं. b/62356416
  • व्यू: Room में अब किसी क्लास को स्टोर की गई क्वेरी के तौर पर दिखाया जा सकता है. इसे @DatabaseView एनोटेशन का इस्तेमाल करके व्यू भी कहा जाता है. b/67033276
  • अपने-आप लागू होने वाली वैल्यू: Room में अब AutoValue एनोटेशन वाली क्लास को इकाइयों और पीओजेओ के तौर पर एलान करने की सुविधा है. रूम के एनोटेशन @PrimaryKey, @ColumnInfo, @Embedded, और @Relation को अब ऑटो वैल्यू के तौर पर एनोटेट किए गए क्लास के ऐब्सट्रैक्ट तरीकों में दिखाया जा सकता है. ध्यान दें कि इन एनोटेशन के साथ @CopyAnnotations भी होना चाहिए, ताकि Room उन्हें सही तरीके से समझ सके. b/62408420
  • डॉक्टर के पर्चे पर मिलने वाली दवा के रिटर्न टाइप के लिए अन्य सहायता: @Insert, @Delete या @Update से एनोटेट किए गए DAO मैथड, अब डॉक्टर के पर्चे पर मिलने वाली दवा के रिटर्न टाइप Completable, Single<T>, और Maybe<T> के साथ काम करते हैं. b/63317956
  • @Relation वाले ऐसे टाइप जिन्हें बदला नहीं जा सकता: पहले, रूम में @Relation एनोटेशन वाले फ़ील्ड को सेट किया जा सकता था. हालांकि, अब उन्हें कन्स्ट्रक्टर पैरामीटर के तौर पर इस्तेमाल किया जा सकता है.
  • enableMultiInstanceInvalidation: एक ही डेटाबेस फ़ाइल का इस्तेमाल करके, RoomDatabase के कई इंस्टेंस में अमान्य होने को चालू करने के लिए, RoomDatabase.Builder में एक नया एपीआई है. एक से ज़्यादा इंस्टेंस को अमान्य करने की यह सुविधा, एक से ज़्यादा प्रोसेस पर भी काम करती है. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: RoomDatabase.Builder में एक नया एपीआई है, जो डेटाबेस को अपने-आप फिर से बनाता है. ऐसा तब होता है, जब डेटाबेस को किसी पुराने वर्शन पर डाउनग्रेड किया जाता है. b/110416954
  • ignoredColumns: @Entity एनोटेशन में मौजूद एक नया एपीआई है. इसका इस्तेमाल, अनदेखा किए गए फ़ील्ड को नाम के हिसाब से सूची में शामिल करने के लिए किया जा सकता है. किसी इकाई पर इनहेरिट किए गए फ़ील्ड को अनदेखा करने के लिए मददगार. b/63522075

एपीआई / व्यवहार में बदलाव

  • RoomDatabase में मौजूद mCallback और mDatabase को अब @Deprecated कर दिया गया है. साथ ही, Room के अगले बड़े वर्शन में इन्हें हटा दिया जाएगा. b/76109329

गड़बड़ियां ठीक की गईं

  • उन दो समस्याओं को ठीक किया गया जिनकी वजह से रूम, गड़बड़ी वाले डेटाबेस से ठीक से वापस नहीं आ पाता था या प्रोसेस शुरू करने के दौरान फ़ाइलें ठीक से काम नहीं करतीं. b/111504749 और b/111519144
  • रूम अब डेटा क्लास में Kotlin के मुख्य कंस्ट्रक्टर का सही तरीके से इस्तेमाल करेगा, ताकि फ़ील्ड को vars के तौर पर बताने की ज़रूरत न पड़े. b/105769985

वर्शन 2.0.0

वर्शन 2.0.0

1 अक्टूबर, 2018

androidx.room 2.0.0 को 2.0.0-rc01 में किसी बदलाव के बिना रिलीज़ किया गया है.

वर्शन 2.0.0-rc01

20 सितंबर, 2018

androidx.room 2.0.0-rc01 को 2.0.0-beta01 के किसी भी बदलाव के बिना रिलीज़ किया गया है.

वर्शन 2.0.0-beta01

2 जुलाई, 2018

एपीआई / व्यवहार में बदलाव

  • क्वेरी को चलाने की जगह को पसंद के मुताबिक बनाने की सुविधा देने के लिए, RoomDatabase.Builder.setQueryExecutor() जोड़ा गया
  • RxJava2 Observable की सुविधा जोड़ी गई
  • जनरेट किया गया डीएओ और डेटाबेस लागू करने की प्रोसेस अब पूरी हो गई है

गड़बड़ियां ठीक की गईं

  • "फ़ील्ड के लिए गटर नहीं मिला" गड़बड़ी b/73334503 में क्लास/फ़ील्ड का नाम बताएं
  • RoomOpenHelper को Room के पुराने वर्शन के साथ काम करने लायक बनाया गया है b/110197391

AndroidX से पहले की डिपेंडेंसी

AndroidX से पहले के Room वर्शन के लिए, ये डिपेंडेंसी शामिल करें:

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

वर्शन 1.1.1

19 जून, 2018

कमरा 1.1.1, कमरा 1.1.1-rc1 से मेल खाता है.

वर्शन 1.1.1-rc1

16 मई, 2018 अगर आप माइग्रेशन का इस्तेमाल कर रहे हैं, तो हमारा सुझाव है कि आप 1.1.0 के बजाय रूम 1.1.1-rc1 का इस्तेमाल करें.

गड़बड़ी को ठीक किया गया, जहां माइग्रेशन शुरू होने के बाद रूम सही तरीके से काम नहीं करेगा b/79362399

वर्शन 1.1.0

वर्शन 1.1.0-बीटा3

19 अप्रैल, 2018

गड़बड़ियां ठीक की गईं

  • जब कोई Kotlin POJO, किसी ऐसी रिलेशन इकाई का रेफ़रंस देता है जिसे Java में तय किया गया था, तो कंपाइलेशन से जुड़ी गड़बड़ी ठीक करना b/78199923

वर्शन 1.1.0-beta2

5 अप्रैल, 2018

गड़बड़ियां ठीक की गईं

  • Room के Rx Single और Maybe लागू करने में एक गंभीर गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, क्वेरी को समय से पहले रीसाइकल किया जाता था. इससे, Single या Maybe के दिखाए गए इंस्टेंस में एक से ज़्यादा ऑब्ज़र्वर जोड़ने पर समस्याएं आती थीं. b/76031240

  • अगर [RoomDatabase.clearAllTables][ref-clearAllTables] को किसी ट्रांज़ैक्शन के अंदर कॉल किया जाता है, तो यह डेटाबेस को VACUUM नहीं करेगा. b/77235565

वर्शन 1.1.0-beta1

21 मार्च, 2018

एपीआई में हुए बदलाव

  • एपीआई की समीक्षा के सुझाव के आधार पर, @RawQuery अब क्वेरी पैरामीटर के तौर पर String को स्वीकार नहीं करता. आपको [SupportSQLiteQuery][ref-SupportSQLiteQuery] का इस्तेमाल करना होगा. (आर्ग्युमेंट के साथ [SupportSQLiteQuery][ref-SupportSQLiteQuery] का इंस्टेंस आसानी से बनाने के लिए, [SimpleSQLiteQuery][ref-SimpleSQLiteQuery] देखें).
  • RoomDatabase.Builder के [fallbackToDestructiveMigrationFrom][ref-fallbackToDestructiveMigrationFrom] मैथड में अब vararg Integer के बजाय vararg int का इस्तेमाल किया जा सकता है.

गड़बड़ियां ठीक की गईं

  • [RoomDatabase.clearAllTables][ref-clearAllTables] अब WAL चेकपॉइंट सेट करके और डेटाबेस को VACUUM करके, ऑपरेटिंग सिस्टम को खाली जगह वापस देने की कोशिश करता है.
  • [@RawQuery][ref-RawQuery] अब observedEntities प्रॉपर्टी के लिए किसी भी पोजो को स्वीकार करता है, बशर्ते वह पोजो अपने Embedded फ़ील्ड या Relation के ज़रिए एक या एक से ज़्यादा इकाइयों का रेफ़रंस देता हो. b/74041772
  • पेजिंग: Room के डेटा सोर्स को लागू करने की सुविधा अब कई टेबल की डिपेंडेंसी (जैसे, संबंध और जॉइन) को सही तरीके से मैनेज करती है. पहले, ये नए नतीजे ट्रिगर नहीं कर पाते थे या कंपाइल नहीं हो पाते थे. b/74128314

वर्शन 1.1.0-alpha1

22 जनवरी, 2018

नई सुविधाएं

  • RawQuery: इस नए एपीआई की मदद से, @Dao तरीकों को क्वेरी पैरामीटर के तौर पर एसक्यूएल पाने की अनुमति मिलती है b/62103290, b/71458963
  • fallBackToDestructiveMigrationsFrom: RoomDatabase.Builder में मौजूद इस नए एपीआई की मदद से, यह बेहतर तरीके से कंट्रोल किया जा सकता है कि कौनसे शुरुआती स्कीमा वर्शन से डेस्ट्रक्टिव माइग्रेशन की अनुमति है. यह कंट्रोल, fallbackToDestructiveMigration की तुलना में बेहतर है b/64989640
  • Room में अब सिर्फ़ नए पेजिंग एपीआई (alpha-4 और उसके बाद के वर्शन) काम करते हैं. साथ ही, अब LivePagedListProvider का इस्तेमाल नहीं किया जा सकता. नए Room alpha का इस्तेमाल करने के लिए, आपको पेजिंग के लिए alpha-4 या उसके बाद के वर्शन का इस्तेमाल करना होगा. अगर आपने अब तक LivePagedListProvider से LivePagedListBuilder पर स्विच नहीं किया है, तो आपको ऐसा करना होगा.

गड़बड़ियां ठीक की गईं

  • Kotlin Kapt टाइप के लिए बेहतर सहायता. b/69164099
  • फ़ील्ड का क्रम अब स्कीमा को अमान्य नहीं करता. b/64290754