रूम

Room परसिस्टेंस लाइब्रेरी, SQLite को लेकर एक ऐब्स्ट्रैक्शन लेयर उपलब्ध कराती है, ताकि डेटाबेस को ज़्यादा अच्छे से ऐक्सेस किया जा सके.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
19 नवंबर, 2025 2.8.4 - - -

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

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

Room की डिपेंडेंसी में ये शामिल हैं: Room माइग्रेशन की टेस्टिंग और Room RxJava

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

Kotlin

dependencies {
    val room_version = "2.8.4"

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

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

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

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

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

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

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

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

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

ग्रूवी

dependencies {
    def room_version = "2.8.4"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Room Gradle Plugin का इस्तेमाल करना

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

प्लगिन जोड़ने के लिए, सबसे ऊपर के लेवल की 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")
    }
}

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

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

विकल्प इस वर्शन के बाद से
room.schemaLocation (ज़रूरी) 2.6.0
room.incremental -
room.generateKotlin -

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

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

Groovy

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

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

Kotlin

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

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

room.schemaLocation एक डायरेक्ट्री है, न कि प्रिमिटिव टाइप. इसलिए, इस विकल्प को जोड़ते समय CommandLineArgumentsProvider का इस्तेमाल करना ज़रूरी है. इससे Gradle को अप-टू-डेट जांच करते समय इस डायरेक्ट्री के बारे में पता चल जाता है. Room डेटाबेस माइग्रेट करना लेख में, CommandLineArgumentsProvider को लागू करने का पूरा तरीका बताया गया है. इससे स्कीमा की जगह की जानकारी मिलती है.

सुझाव/राय दें या शिकायत करें

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

नई समस्या दर्ज करने का तरीका

ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.

वर्शन 2.8

वर्शन 2.8.4

19 नवंबर, 2025

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

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

  • SQLiteDriver का इस्तेमाल करते समय, Room के कनेक्शन पूल में तैयार किए गए स्टेटमेंट की कैश मेमोरी जोड़ी गई है. ऐसा तब किया जाता है, जब SQLiteDriver में इंटरनल पूल नहीं होता है, जैसे कि BundledSQLiteDriver. इससे एक ही SQL स्टेटमेंट को बार-बार लागू करने पर परफ़ॉर्मेंस बेहतर होती है. (5f43bc, b/319653917)
  • स्कीमा की पुष्टि करने पर, गड़बड़ी के असल / अनुमानित मैसेज में जानकारी मौजूद न होने की समस्या को ठीक किया गया है. (8b23da, b/454531083)
  • Room के Kotlin कोड जनरेशन से जुड़ी समस्या ठीक की गई है. इसमें टाइप वैरिएबल के साथ @Transaction DAO फ़ंक्शन मौजूद नहीं थे. (a8365d, b/251316420)
  • थ्रेड हॉपिंग से बचें और SupportSQLiteDatabase एपीआई की तरह ही ब्लॉकिंग का व्यवहार बनाए रखें. इससे Room के SupportSQLite रैपर की परफ़ॉर्मेंस बेहतर होगी. (fc70e4)

वर्शन 2.8.3

22 अक्टूबर, 2025

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

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

  • Room SQLite रैपर से जुड़ी परफ़ॉर्मेंस की समस्या को ठीक किया गया है. इस समस्या की वजह से, कर्सर पर बार-बार दोहराने पर, बहुत ज़्यादा JNI कॉल हो रहे थे और परफ़ॉर्मेंस में काफ़ी गिरावट आ रही थी.

वर्शन 2.8.2

08 अक्टूबर, 2025

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

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

  • फ़्लो एमिशन से अपने-आप बंद होने वाले डेटाबेस को फिर से खोलने पर होने वाली डेडलॉक की समस्या को ठीक किया गया (b/446643789).

वर्शन 2.8.1

24 सितंबर, 2025

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

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

  • सस्पेंड किए गए लैम्डा के साथ DAO फ़ंक्शन को प्रोसेस करते समय होने वाली प्रोसेसर क्रैश की समस्या को ठीक किया गया है. (b/442220723).
  • रेस कंडीशन की समस्या को ठीक किया गया है. इस वजह से, फ़्लो को अपडेट नहीं मिल पा रहे थे.

वर्शन 2.8.0

10 सितंबर, 2025

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

2.7.0 के बाद से हुए अहम बदलाव:

  • एक नया आर्टफ़ैक्ट androidx.room:room-sqlite-wrapper जोड़ा गया है. इसमें ऐसे एपीआई शामिल हैं जिनकी मदद से, कॉन्फ़िगर किए गए SQLiteDriver के साथ RoomDatabase से SupportSQLiteDatabase रैपर पाया जा सकता है. रैपर पाने के लिए, नए एक्सटेंशन फ़ंक्शन RoomDatabase.getSupportWrapper() का इस्तेमाल करें. यह कंपैटिबिलिटी आर्टफ़ैक्ट है. इसका इस्तेमाल SupportSQLiteDatabase के इस्तेमाल को बनाए रखने के लिए किया जाता है. आम तौर पर, इसे roomDatabase.openHelper.writableDatabase से हासिल किया जाता है. भले ही, Room डेटाबेस को SQLiteDriver के साथ कॉन्फ़िगर किया गया हो. यह रैपर, कोडबेस के इंक्रीमेंटल माइग्रेशन के लिए फ़ायदेमंद है. इसका इस्तेमाल उन कोडबेस के लिए किया जा सकता है जो SQLiteDriver API का इस्तेमाल करना चाहते हैं, लेकिन अब भी SupportSQLite API का बड़े पैमाने पर इस्तेमाल कर रहे हैं. साथ ही, वे BundledSQLiteDriver का फ़ायदा पाना चाहते हैं. ज़्यादा जानकारी के लिए, डेटा को दूसरी जगह भेजने से जुड़ी गाइड देखें.
  • KMP टारगेट Watch OS और Tv OS के लिए सपोर्ट जोड़ा गया.
  • लाइब्रेरी के Android minSDK को एपीआई 21 से एपीआई 23 पर अपडेट किया गया

वर्शन 2.8.0-rc02

27 अगस्त, 2025

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

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

  • minSDK को एपीआई 21 से एपीआई 23 पर अपडेट करें (Ibdfca, b/380448311, b/435705964, b/435705223)
  • Room Gradle प्लग इन के साथ काम करने वाले Android Gradle प्लग इन (AGP) के कम से कम वर्शन को 8.1 से 8.4 पर अपडेट किया गया है. (Ia0d28)

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

  • उस समस्या को ठीक किया गया है जिसमें पहले से पैकेज किए गए डेटाबेस (b/432634197) के लिए माइग्रेशन पाथ उपलब्ध होने के बावजूद, डिस्ट्रक्टिव माइग्रेशन किया जा रहा था.

वर्शन 2.8.0-rc01

13 अगस्त, 2025

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

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

  • पुरानी हो चुकी @RequiresApi(21) एनोटेशन (Ic4792, I9103b) हटाना

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

  • रेस कंडीशन को ठीक किया गया है. इसमें Room Flows, एसिंक्रोनस मल्टी-क्वेरी/राइट की स्थिति में क्वेरी का सबसे नया नतीजा नहीं दिखाता था. (Ic9a3c)

वर्शन 2.8.0-beta01

1 अगस्त, 2025

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

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

  • डेटा मिटाने वाले माइग्रेशन के दौरान, टेबल और व्यू के नामों को अब सही तरीके से एस्केप किया जाता है. (9e55f8, b/427095319)

वर्शन 2.8.0-alpha01

16 जुलाई, 2025

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

नई सुविधाएं

  • नया आर्टफ़ैक्ट androidx.room:room-sqlite-wrapper जोड़ा गया है. इसमें SQLiteDriver के साथ कॉन्फ़िगर किए गए RoomDatabase का SupportSQLiteDatabase रैपर पाने के लिए एपीआई शामिल हैं. रैपर पाने के लिए, नए एक्सटेंशन फ़ंक्शन RoomDatabase.getSupportWrapper() का इस्तेमाल करें. यह कंपैटिबिलिटी आर्टफ़ैक्ट है. इसका इस्तेमाल SupportSQLiteDatabase के इस्तेमाल को बनाए रखने के लिए किया जाता है. आम तौर पर, इसे RoomDatabase.openHelper.writableDatabase से हासिल किया जाता है. भले ही, Room डेटाबेस को SQLiteDriver के साथ कॉन्फ़िगर किया गया हो. यह रैपर, कोडबेस के इंक्रीमेंटल माइग्रेशन के लिए फ़ायदेमंद है. इसका इस्तेमाल उन डेवलपर के लिए किया जा सकता है जो SQLiteDriver को अपनाना चाहते हैं, लेकिन अब भी SupportSQLite एपीआई का इस्तेमाल करते हैं. हालांकि, वे BundledSQLiteDriver का फ़ायदा पाना चाहते हैं. (Icf6ac)
  • Watch OS और TV OS के लिए केएमपी टारगेट जोड़ें (I228f6, b/394238801)

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

  • लेन-देन को निलंबित करने और AndroidSQLiteDriver का इस्तेमाल करने के दौरान, कभी-कभी होने वाली डेडलॉक की समस्या को ठीक किया गया. (b/415006268)

वर्शन 2.7

वर्शन 2.7.2

18 जून, 2025

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

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

  • उस समस्या को ठीक किया गया है जिसमें KSP की मदद से नेटिव सोर्स को प्रोसेस करते समय, एनोटेशन की वैल्यू को गलत तरीके से पढ़ा जाता था. साथ ही, कभी-कभी स्कीमा एक्सपोर्ट नहीं होते थे. (b/416549580)
  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, एसक्यूएल में मौजूद शुरुआती टिप्पणियों की वजह से स्टेटमेंट ऐसे एक्ज़ीक्यूट होते थे जैसे वे पढ़ी नहीं गई क्वेरी हों. (b/413061402)
  • स्कीमा डायरेक्ट्री खाली होने की वजह से, Room के Gradle प्लगिन को कॉन्फ़िगर नहीं किया जा सका. इस समस्या को ठीक किया गया है. (b/417823384)
  • कनेक्शन मिलने में ज़्यादा समय लगने पर, अब SQLiteException नहीं दिखेगा. इसके बजाय, लाइब्रेरी से लॉग मैसेज भेजा जाएगा. इस अपडेट में, iOS के लूपर को निलंबित करने के बजाय लॉगिंग की सुविधा जोड़ी गई है. इससे Room को कनेक्शन हासिल करने वाली Kotlin Coroutine में होने वाले टाइमआउट की गलत व्याख्या करने से रोका जा सकेगा. साथ ही, iOS ऐप्लिकेशन को बैकग्राउंड में ले जाने और डेटाबेस ऑपरेशन के बीच में फिर से शुरू करने पर, अपवाद को थ्रो होने से रोका जा सकेगा. (b/422448815)

वर्शन 2.7.1

23 अप्रैल, 2025

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

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

  • टाइप कन्वर्टर की पुष्टि के दौरान, IndexOutOfBoundsException बग को ठीक किया गया. (b/409804755).
  • जब SQLiteDriver को Room के साथ कॉन्फ़िगर किया जाता है, तब RoomDatabase.runInTransaction() काम करता है. (b/408364828).

वर्शन 2.7.0

9 अप्रैल, 2025

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

2.6.0 के बाद हुए अहम बदलाव

  • Kotlin Multiplatform (KMP) के साथ काम करता है: इस रिलीज़ में, Room को Kotlin Multiplatform (KMP) लाइब्रेरी के तौर पर फिर से बनाया गया है. फ़िलहाल, ये प्लैटफ़ॉर्म केएमपी के साथ काम करते हैं: Android, iOS, JVM (डेस्कटॉप), नेटिव Mac, और नेटिव Linux. Room KMP का इस्तेमाल शुरू करने के बारे में ज़्यादा जानने के लिए, कृपया Room KMP का आधिकारिक दस्तावेज़ देखें. KMP के साथ काम करने की सुविधा के तहत, Room को SQLiteDriver के साथ भी कॉन्फ़िगर किया जा सकता है. किसी मौजूदा ऐप्लिकेशन को Driver API और Room KMP पर माइग्रेट करने के तरीके के बारे में जानने के लिए, माइग्रेशन से जुड़े दस्तावेज़ देखें.
  • अगर प्रोसेसिंग KSP के ज़रिए की जाती है, तो KSP पर Kotlin कोड जनरेट करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. सिर्फ़ KAPT या Java प्रोजेक्ट के लिए, Room अब भी Java सोर्स जनरेट करेगा.
  • Kotlin 2.0 और KSP2: Room अब Kotlin लैंग्वेज 2.0 को टारगेट करता है. साथ ही, प्रोजेक्ट को Kotlin 2.0 और इसके बराबर या इससे ज़्यादा के लैंग्वेज वर्शन के साथ कंपाइल करना होगा. KSP2 के लिए भी सहायता जोड़ी गई है. हमारा सुझाव है कि Kotlin 2.0 या इसके बाद के वर्शन के साथ Room का इस्तेमाल करते समय, KSP2 का इस्तेमाल करें.

वर्शन 2.7.0-rc03

26 मार्च, 2025

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

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

  • Room blocking APIs के एक्ज़ीक्यूशन के दौरान थ्रेड में रुकावट आने पर, अब InterruptedException नहीं दिखेगा. इसमें DAO फ़ंक्शन (b/400584611) को ब्लॉक करना भी शामिल है.
  • SQLException: Error code: 5, message: Timed out attempting to acquire a reader connection. और इसी तरह की अन्य समस्याओं (b/380088809) को कम करने के लिए, Room के कनेक्शन पूल को फिर से लागू किया गया है.

वर्शन 2.7.0-rc02

12 मार्च, 2025

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

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

  • ऑटो माइग्रेशन की सुविधा से जुड़ी उस समस्या को ठीक किया गया है जिसमें FTS टेबल पर मौजूद नए कॉलम को गलत तरीके से हैंडल किया जा रहा था. (b/348227770, Ic53f3)
  • KSP के ज़रिए नॉन-जेवीएम सोर्स को प्रोसेस करते समय, NullPointerException की वजह से रूम-कंपाइलर क्रैश होने की समस्या ठीक की गई. (b/396607230, I693c9)
  • उस समस्या को ठीक किया गया है जिसमें Room, writer कनेक्शन का इस्तेमाल करने के बाद टेबल को अमान्य नहीं करता था. (b/340606803, I73ef6)

वर्शन 2.7.0-rc01

26 फ़रवरी, 2025

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

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

  • उस समस्या को ठीक किया गया है जिसकी वजह से Room, डेटाबेस से शुरुआती कनेक्शन के दौरान busy_timeout सेट नहीं कर रहा था. इससे SQLException: Error code: 5, message: database is locked से जुड़ी समस्याएं हो रही थीं (I93208, b/380088809).
  • Room के कंपाइलर में मौजूद एक समस्या को ठीक किया गया है. इस समस्या की वजह से, Kotlin 2.1.x और KSP1 पर नेटिव सोर्स सेट (जैसे कि iOS) को प्रोसेस करते समय, KSP प्रोसेसर क्रैश हो जाता था (I883b8, b/396607230).

वर्शन 2.7.0-beta01

12 फ़रवरी, 2025

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

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

  • RoomDatabase.inTransaction() के बंद डेटाबेस को खोलने से जुड़ी समस्या को ठीक किया गया है. साथ ही, अगर डेटाबेस बंद है, तो उसे तुरंत गलत के तौर पर मार्क किया जाना चाहिए (b/325432967).
  • Kotlin की इनलाइन / वैल्यू क्लास (b/388299754) के साथ डीएओ फ़ंक्शन प्रोसेस करते समय, Room के कंपाइलर में क्रैश (IllegalArgumentException: not a valid name) की समस्या ठीक की गई.
  • room-runtime के JVM आर्टफ़ैक्ट में Proguard के नियम शामिल करें, ताकि जनरेट किए गए डेटाबेस के डिफ़ॉल्ट कंस्ट्रक्टर को न हटाया जाए. ऐसा इसलिए, क्योंकि इसका इस्तेमाल Room के डिफ़ॉल्ट इनिशियलाइज़ेशन में किया जाता है. यह रिफ़्लेक्शन का इस्तेमाल करता है (b/392657750).

वर्शन 2.7.0-alpha13

29 जनवरी, 2025

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

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

  • Room अब Kotlin लैंग्वेज 2.0 को टारगेट करता है. इसलिए, प्रोजेक्ट को Kotlin 2.0 और इसके बराबर या इससे ज़्यादा लैंग्वेज वर्शन के साथ कंपाइल करना होगा. (I8efb0, b/315461431, b/384600605)

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

  • Android में पाथ के बजाय सामान्य नाम का इस्तेमाल करने पर, Room KMP डेटाबेस बिल्डर में समस्या ठीक की गई. साथ ही, डेटाबेस फ़ाइल के पाथ को ऐप्लिकेशन की डेटा डायरेक्ट्री में नहीं रखा जाएगा. (I83315, b/377830104)
  • Room Gradle प्लगिन से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, स्कीमा इनपुट और आउटपुट को कॉन्फ़िगर करने की वजह से, Android प्रोजेक्ट में समस्या आ रही थी: property 'inputDirectory' is final and cannot be changed any further. (1dbb4c, b/376071291)
  • Room Gradle Plugin में KSP2 के लिए सहायता जोड़ी गई है. साथ ही, उस समस्या को ठीक किया गया है जिसमें प्लगिन, स्कीमा डायरेक्ट्री को ठीक से सेट अप नहीं कर रहा था. (Iec3c4, b/379159770)

बाहरी योगदान

  • Room पेजिंग इंटिग्रेशन से जुड़ी समस्या को ठीक किया गया है. इसकी वजह से, रीफ़्रेश करने की शुरुआती कुंजी सूची के आखिर के बहुत करीब होने पर यूज़र इंटरफ़ेस (यूआई) जंप करता था. एवा को धन्यवाद! (I2abbe, b/389729367)

वर्शन 2.7.0-alpha12

11 दिसंबर, 2024

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

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

  • एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई RoomDatabase.Builder.setInMemoryTrackingMode() को जोड़ें. इससे यह कॉन्फ़िगर किया जा सकेगा कि Room, अमान्य होने की ट्रैकिंग के लिए इन-मेमोरी टेबल का इस्तेमाल करेगा या नहीं. (I2a9b2, b/185414040)

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

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

वर्शन 2.7.0-alpha11

30 अक्टूबर, 2024

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

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

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

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

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

वर्शन 2.7.0-alpha10

16 अक्टूबर, 2024

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

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

  • Android और JVM के अलावा अन्य प्लैटफ़ॉर्म पर ByteBuffer के साथ Relations को सपोर्ट करने के लिए, इंटरनल 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 आर्टफ़ैक्ट को केएमपी के साथ काम करने के लिए माइग्रेट कर दिया गया है. (Ib8756, b/339934824)
  • एपीआई invalidationTrackerFlow() को InvalidationTracker.createFlow() के तौर पर पहले पक्ष का एपीआई बना दिया गया है. अब यह KMP प्रोजेक्ट में, Android के अलावा अन्य सोर्स सेट के लिए उपलब्ध है. (I1fbfa, (I8fb29), b/329291639, b/329315924)

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

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

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

  • उस समस्या को ठीक किया गया है जिसमें Room KMP, नॉन-JVM प्लैटफ़ॉर्म के लिए UUID का इस्तेमाल करके कोड को एमिट करने की कोशिश करता था. (b/362994709)
  • Room Gradle प्लगिन से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, Compose Multiplatform के साथ KMP प्रोजेक्ट में इस्तेमाल किए जाने पर, ‘Cannot change attributes of configuration … after it has been locked for mutation’ जैसी गड़बड़ी होती थी. (b/343408758)

वर्शन 2.7.0-alpha07

21 अगस्त, 2024

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

नई सुविधाएं

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

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

  • RoomDatabaseConstructor के जनरेट किए गए ‘actual’ में मौजूद उस समस्या को ठीक किया गया है जिसमें initialize फ़ंक्शन में ‘actual’ मॉडिफ़ायर मौजूद नहीं होता था. ऐसा तब होता था, जब ‘expect’ डिक्लेरेशन में भी इस फ़ंक्शन को ओवरराइड किया जाता था. (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() को रेफ़रंस करने की रणनीति अब काम नहीं करेगी. instantiateImpl() रणनीति की जगह, दो नए एपीआई @ConstructedBy और RoomDatabaseConstructor का इस्तेमाल किया जाएगा. नई रणनीति इस तरह है:

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

      expect object MyDatabaseCtor : RoomDatabaseConstructor<MyDatabase>
    
  2. @Database का इस्तेमाल करके, ऑब्जेक्ट को @ConstructedBy घोषणा से लिंक करें

      @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 को ठीक किया गया

  • Room KMP में @RawQuery के लिए सहायता जोड़ी गई. इसके लिए, RoomRawQuery नाम का एक नया एपीआई जोड़ा गया है. यह रॉ एसक्यूएल स्ट्रिंग को होल्ड करने के मामले में SupportSQLiteQuery के जैसा है. साथ ही, इसमें किसी स्टेटमेंट में आर्ग्युमेंट को बाइंड करने का फ़ंक्शन भी है. @RawQuery एनोटेट किए गए फ़ंक्शन, अब RoomRawQuery को अपने सिंगल पैरामीटर के तौर पर स्वीकार कर सकते हैं. (Iea844, b/330586815)
  • setQueryCallback() को ज़्यादातर CoroutineContext स्वीकार करने की अनुमति दें. (Id66ff, b/309996304)
  • linuxArm64 Kotlin Multiplatform टारगेट (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 में ये बदलाव शामिल हैं.

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

  • Room के एनोटेशन प्रोसेसर में मौजूद उस समस्या को ठीक किया गया है जिसकी वजह से, DAO में मल्टी-मैप रिटर्न टाइप तय किए जाने पर, KMP के साथ काम न करने वाला कोड जनरेट होता था. (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 में ये बदलाव शामिल हैं.

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

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

वर्शन 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. जिन प्लैटफ़ॉर्म पर Room का नया वर्शन काम करता है उनमें अगर कोई सुविधा मौजूद नहीं है, तो आने वाले समय में Room के रिलीज़ होने वाले वर्शन में वह सुविधा उपलब्ध कराई जाएगी.

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

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

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

  • Room.databaseBuilder() का एक ओवरलोड जोड़ा गया है. यह एक लैम्डा पैरामीटर लेता है. इसका इस्तेमाल, Room से जनरेट किए गए फ़ंक्शन के साथ किया जाता है, ताकि जनरेट किए गए RoomDatabase को इंस्टैंशिएट करते समय रिफ़्लेक्शन का इस्तेमाल न किया जा सके. इस्तेमाल का उदाहरण:
Room.databaseBuilder<MyDatabase>(
    context = appContext,
    name = dbFilePath,
    factory =  { MyDatabase::class.instantiateImpl() }
)
  • बिल्डर में, CoroutineContext की मदद से रूम को कॉन्फ़िगर करने के लिए एक एपीआई जोड़ा गया है: RoomDatabase.Builder.setQueryCoroutineContext. ध्यान दें कि RoomDatabase को सिर्फ़ setQueryExecutor का इस्तेमाल करने वाले एक्ज़ीक्यूटर या Coroutine कॉन्टेक्स्ट के साथ कॉन्फ़िगर किया जा सकता है. दोनों के साथ कॉन्फ़िगर नहीं किया जा सकता.
  • SQLite ड्राइवर के साथ Room को कॉन्फ़िगर करने के लिए एक एपीआई जोड़ा गया है: RoomDatabase.Builder.setDriver(). SQLite Driver API के बारे में ज़्यादा जानने के लिए, SQLite KMP दस्तावेज़ पढ़ें
  • ड्राइवर एपीआई से, SQLiteConnection को ऐक्सेस करने के लिए एपीआई जोड़े गए हैं: RoomDatabase.useReaderConnection और RoomDatabase.useWriterConnection.
  • Varios Room से जुड़े कई कॉलबैक में अब ओवरलोड किया गया वर्शन है. इसमें SupportSQLiteDatabase के बजाय SQLiteConnection मिलता है. इन्हें KMP प्रोजेक्ट पर माइग्रेट करते समय बदला जा सकता है. Android ऐप्लिकेशन में Room के इस्तेमाल को सामान्य KMP मॉड्यूल में माइग्रेट करने के बारे में ज़्यादा जानकारी के लिए, माइग्रेशन गाइड देखें. कॉलबैक ये हैं:
    • 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 में Double कॉलम के लिए डिफ़ॉल्ट वैल्यू 0.0 के बजाय 0 पर सेट हो रही थी. फ़्लोट टाइप कॉलम के लिए, मिलते-जुलते एज-केस को ठीक करने का तरीका भी शामिल किया गया है. (Id75f5, b/304584179)
  • PagingSource से लोड किए गए कॉन्टेंट से जुड़ी गड़बड़ियों को अब LoadResult.Error के LoadStateUpdate के तौर पर दिखाया जाएगा. इसमें Throwable शामिल होगा. इस गड़बड़ी की स्थिति को 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 के बाद हुए ज़रूरी बदलाव

  • Room KSP में, 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\>

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

नई सुविधाएं

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

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

  • @MapInfo की जगह @MapColumn नाम का नया टाइप एनोटेशन बनाया गया है. @MapInfo को अब बंद कर दिया गया है. @MapInfo एनोटेशन में दिए गए हर कॉलम के नाम (keyColumnName, valueColumnName या दोनों) के लिए, आपको सिर्फ़ columnName के साथ @MapColumn एनोटेशन का एलान करना होगा. साथ ही, एनोटेशन का इस्तेमाल उस खास टाइप के आर्ग्युमेंट पर करना होगा जिसे डीएओ फ़ंक्शन के रिटर्न टाइप में मैप की कुंजी या वैल्यू के तौर पर रेफ़र किया जा रहा है. ऐसा इसलिए है, क्योंकि @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 है. यह Room में मौजूद कई समस्याओं को हल करता है. ये समस्याएं, Gradle एनोटेशन प्रोसेसर के विकल्पों के ज़रिए स्कीमा के इनपुट और आउटपुट से जुड़ी हैं. Room Gradle प्लगिन, प्रोजेक्ट को इस तरह से कॉन्फ़िगर करता है कि जनरेट किए गए स्कीमा, ऑटो-माइग्रेशन के लिए इस्तेमाल किए जाते हैं. साथ ही, कंपाइल टास्क के आउटपुट को सही तरीके से कॉन्फ़िगर किया जाता है, ताकि फिर से बनाए जा सकने वाले और कैश किए जा सकने वाले बिल्ड मिल सकें. यह प्लगिन, बुनियादी स्कीमा की लोकेशन को कॉन्फ़िगर करने के लिए डीएसएल उपलब्ध कराता है:

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

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

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

  • RoomDatabase.QueryCallback को एक फ़ंक्शनल इंटरफ़ेस के तौर पर तय किया गया है, ताकि एसएएम कन्वर्ज़न के इस्तेमाल की अनुमति दी जा सके. (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 में वैल्यू क्लास का इस्तेमाल किया जा सकता है. Room अब इकाइयों में वैल्यू क्लास का इस्तेमाल कर सकता है. (4194095)
  • Room में अब 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\>

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

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

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

  • Kotlin codegen में, ऐब्स्ट्रैक्ट प्रॉपर्टी को DAO getter या DAO क्वेरी के तौर पर इस्तेमाल करने की अनुमति न दें. इसके बजाय, उन्हें फ़ंक्शन के तौर पर फिर से लिखा जाना चाहिए, ताकि यह गलत धारणा न बने कि प्रॉपर्टी की वैल्यू बदली नहीं जा सकती और इसका नतीजा पहले से सेव है. (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)
  • Room के acquireTransactionThread() में, रीएंट्रेंट केस को बेहतर तरीके से हैंडल करने की सुविधा अब उपलब्ध है. (219f98b). लेन-देन को निलंबित करने के दौरान, Room, लेन-देन को लागू करने वाले थ्रेड का इस्तेमाल करता है. साथ ही, इसमें एक इवेंट लूप शुरू करता है. इसके बाद, डेटाबेस से जुड़ी निलंबित कार्रवाइयों को इसमें भेजता है, ताकि वे सभी लेन-देन के कोरूटीन में शामिल हो जाएं. आम तौर पर, लेन-देन की थ्रेड, लेन-देन शुरू करने वाली थ्रेड से अलग होती है. हालांकि, कुछ मामलों में ये एक ही होती हैं. ऐसे मामलों को हैंडल करने के लिए, withTransaction() को फिर से फ़ैक्टर किया गया है, ताकि यह अब कंट्रोल जॉब पर निर्भर न रहे. इसके बजाय, यह लेन-देन थ्रेड में 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 में onInvalidate() को Observer में एलान करना होगा, ताकि Set टाइप का पैरामीटर मिल सके, न कि MutableSet टाइप का. इसके अलावा, कुछ गेटर तरीकों को ऐसी प्रॉपर्टी में बदल दिया गया था जिनके लिए 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 में ये बदलाव शामिल हैं.

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

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

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

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

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

  • डुप्लीकेट कॉलम का पता लगाने वाला अनुमानित एल्गोरिदम. Room अब मल्टीमैप क्वेरी में, एक से ज़्यादा मतलब वाले कॉलम की समस्या को हल करने की कोशिश करेगा. इससे एक ही नाम वाली टेबल के साथ JOIN को, नतीजे के डेटा ऑब्जेक्ट पर सही तरीके से मैप किया जा सकता है. (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)
  • room-common को 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 में ये बदलाव शामिल हैं.

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

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

वर्शन 2.4.2

वर्शन 2.4.2

23 फ़रवरी, 2022

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

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

  • Dao @Transaction के ऐसे suspend फ़ंक्शन के लिए कोड जनरेट करने से जुड़ी समस्या को ठीक किया गया है जिसमें एक बॉडी होती है. इस बॉडी से, -Xjvm-default=all या इसके बराबर के फ़ंक्शन के साथ कंपाइल करने की वजह से, डिफ़ॉल्ट इंटरफ़ेस मेथड जनरेट होती है. (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 सोर्स में इंटरनल प्रॉपर्टी के लिए सहायता जोड़ी गई. Room में यह थोड़ा बदलाव किया गया है. अब यह फ़ंक्शन के सोर्स नेम का इस्तेमाल करेगा. इससे, फ़ंक्शन को गेटर/सेटर के तौर पर प्रॉपर्टी से मैच करने में मदद मिलेगी. इससे पहले, यह फ़ंक्शन के 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 अब अपने-आप माइग्रेट होने की सुविधा के लिए एक एपीआई उपलब्ध कराता है. हालांकि, इसके लिए स्कीमा एक्सपोर्ट करना ज़रूरी है. Room को यह बताने के लिए कि उसे नई प्रॉपर्टी में अपने-आप माइग्रेट होने की सुविधा जनरेट करनी चाहिए, @Database#autoMigrations का इस्तेमाल किया जा सकता है. इससे यह तय किया जा सकता है कि किस वर्शन से किस वर्शन में अपने-आप माइग्रेट होना है. जब Room को टेबल और कॉलम के नाम बदलने या उन्हें मिटाने के बारे में अतिरिक्त जानकारी की ज़रूरत होती है, तब @AutoMigration एनोटेशन, ऐसी जानकारी देने वाली स्पेसिफ़िकेशन क्लास का एलान कर सकता है. ज़्यादा जानकारी के लिए, @AutoMigrationदस्तावेज़ देखें.
  • अपने-आप माइग्रेट होने की सुविधा में डिपेंडेंसी इंजेक्शन: @ProvidedAutoMigrationSpec एक नया एपीआई है. इसका इस्तेमाल यह एलान करने के लिए किया जाता है कि AutoMigrationSpec को रनटाइम के दौरान RoomDatabase.Builder#addAutoMigrationSpec() के ज़रिए उपलब्ध कराया जाएगा. इससे डिपेंडेंसी इंजेक्शन फ़्रेमवर्क, जटिल डिपेंडेंसी की ज़रूरत होने पर इस तरह के स्पेसिफ़िकेशन दे पाता है.
  • अपने-आप माइग्रेट होने की सुविधा के लिए, माइग्रेशन टेस्ट हेल्पर का इस्तेमाल किया जा सकता है: Room के MigrationTestHelper को अपडेट किया गया है, ताकि यह अपने-आप माइग्रेट होने की सुविधा के साथ काम कर सके. इसके लिए, एक नया कंस्ट्रक्टर एपीआई उपलब्ध कराया गया है, जो टेस्ट के दौरान डेटाबेस क्लास को स्वीकार करता है. इससे हेल्पर को runMigrationsAndValidate के दौरान, अपने-आप माइग्रेट होने की सुविधा को उसी तरह से जोड़ने की अनुमति मिलती है.
  • Room-Paging की सुविधा: androidx.room:room-paging को रिलीज़ कर दिया गया है. इससे Room की क्वेरी के लिए, Paging 3.0 की सुविधा मिलती है. इससे androidx.paging.PagingSource मिलता है.
  • रिलेशनल क्वेरी के तरीके: Room अब multimap रिटर्न टाइप @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 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • Room की KSP पर निर्भरता को 1.6.0-1.0.1 पर अपडेट किया गया है, ताकि Kotlin 1.6 के साथ काम किया जा सके

वर्शन 2.4.0-beta02

17 नवंबर, 2021

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

नई सुविधाएं

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

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

  • हमने एक नया TypeConverter analyzer जोड़ा है, जो टाइप में nullability की जानकारी को ध्यान में रखता है. यह जानकारी सिर्फ़ KSP में उपलब्ध है. इसलिए, यह सिर्फ़ KSP में डिफ़ॉल्ट रूप से चालू होती है. अगर इससे कोई समस्या होती है, तो एनोटेशन प्रोसेसर को room.useNullAwareTypeAnalysis=false पास करके, इसे बंद किया जा सकता है. अगर ऐसा होता है, तो कृपया गड़बड़ी की शिकायत करें, क्योंकि आने वाले समय में इस फ़्लैग को हटा दिया जाएगा. इस नए TypeConverter analyzer के साथ, सिर्फ़ गैर-शून्य TypeConverters उपलब्ध कराने का सुझाव दिया जाता है, क्योंकि नए analyzer में उन्हें शून्य की जांच के साथ रैप करने की सुविधा होती है. ध्यान दें कि इसका असर KAPT या Java का इस्तेमाल करने वाले लोगों पर नहीं पड़ता, क्योंकि एनोटेशन प्रोसेसर (KSP के उलट) के टाइप में, शून्य होने की जानकारी नहीं होती है. (Ia88f9, b/193437407)
  • उस बग को ठीक किया गया है जिसमें आईसीयू टोकनाइज़र का इस्तेमाल करने के लिए एलान की गई किसी एफ़टीएस इकाई के साथ 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)
  • room-paging से जनरेट किया गया PagingSource अब 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 एनोटेशन के ज़रिए, DAO में Multimap के लिए नॉन-POJO कुंजियों/वैल्यू का इस्तेमाल किया जा सकता है. (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 को रिलीज़ किया गया है. इसमें 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 को लागू करने का नया तरीका, कुंजियों को अलग-अलग तरीके से पार्स करता है. इसलिए, Room के PagingSource को मैन्युअल तरीके से दी गई किसी भी कुंजी को इस व्यवहार में हुए बदलाव के बारे में बताना होगा. इसमें Pager के कंस्ट्रक्टर के ज़रिए पास की गई initialKey भी शामिल है. पेज, Key से लोड होना शुरू हो जाएंगे. Key सबसे पहले लोड होगा. यह मौजूदा व्यवहार से अलग है. इसमें LoadParams.Refresh.Key को उपयोगकर्ता की स्क्रोल पोज़िशन के तौर पर माना जाता है और आइटम को कुंजी से पहले और बाद में, दोनों जगह लोड किया जाता है.

  • आर्टफ़ैक्ट का इस्तेमाल करना ज़रूरी नहीं है. अगर आप इसका इस्तेमाल नहीं करते हैं, तो Paging 3.0 के लिए मौजूदा सहायता का इस्तेमाल किया जाएगा. यह सहायता Room 2.3 में उपलब्ध कराई गई थी. हालांकि, आने वाले समय में रिलीज़ होने वाले नए वर्शन में, Room with Paging 3.0 का इस्तेमाल करने वाले लोगों के लिए यह आर्टफ़ैक्ट ज़रूरी हो जाएगा. ऑप्ट-इन करने के लिए, अपने क्लासपाथ में नया room-paging आर्टफ़ैक्ट जोड़ें. अगर 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 में ये बदलाव शामिल हैं.

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

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

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

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

  • उस समस्या को ठीक किया गया है जिसमें @Transaction फ़ंक्शन का रिटर्न टाइप Flow होने पर, Room में गड़बड़ी नहीं होती थी (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 को ठीक से फिर से नहीं बनाया जा रहा था.

बाहरी योगदान

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

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

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

वर्शन 2.3.0

वर्शन 2.3.0

21 अप्रैल, 2021

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

2.2.0 के बाद हुए अहम बदलाव

  • इनम के लिए पहले से मौजूद सहायता: अगर कोई टाइप कन्वर्टर नहीं दिया गया है, तो Room अब डिफ़ॉल्ट रूप से, Enum को String और इसके उलट टाइप कन्वर्टर का इस्तेमाल करेगा. अगर किसी enum के लिए टाइप कन्वर्टर पहले से मौजूद है, तो 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 बनाने से, एएनआर ट्रिगर हो सकता था. (I42b74, b/181221318)
  • @ExperimentalRoomApi की दिखने की सेटिंग को पैकेज के लिए निजी के बजाय सार्वजनिक के तौर पर सेट किया गया. (b/181356119)

बाहरी योगदान

  • इस विकल्प को चालू करने पर, Room को @Query एनोटेट किए गए डीएओ मैथड में POJO रिटर्न टाइप स्वीकार करने की अनुमति मिलती है. ऐसा तब होता है, जब इसे @SkipQueryVerification के साथ भी एनोटेट किया गया हो. रूम, क्वेरी के नतीजे को POJO के तौर पर लौटाने की पूरी कोशिश करेगा. यह ठीक उसी तरह से काम करेगा जिस तरह @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 Symbol Processing 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 में ये बदलाव शामिल हैं.

नई सुविधाएं

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

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

  • उस समस्या को ठीक किया गया है जिसमें कई @Update या अलग-अलग टकराव की रणनीतियों वाले @Delete तरीकों के साथ Dao तरीके, सिर्फ़ एक रणनीति वाला कोड जनरेट करते थे. इससे, तय की गई रणनीति को अनदेखा कर दिया जाता था. (/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 से String और इसके उलट टाइप कन्वर्टर का इस्तेमाल करेगा. अगर किसी enum के लिए टाइप कन्वर्टर पहले से मौजूद है, तो Room डिफ़ॉल्ट कन्वर्टर के बजाय इसका इस्तेमाल करेगा. (b/73132006)

आम समस्या

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

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

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

बाहरी योगदान

  • अगर WAL मोड चालू है और एपीआई 16 या इससे ज़्यादा है, तो Room अब डिफ़ॉल्ट रूप से beginTransactionNonExclusive का इस्तेमाल करेगा. ‘अहमद आई. Khalil | ahmedibrahimkhali@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 में अब ऐसे एपीआई हैं जिनकी मदद से, पहले से पैकेज किए गए डेटाबेस का इस्तेमाल करके डेटाबेस बनाया जा सकता है. इस डेटाबेस को इनपुट स्ट्रीम से पढ़ा जाता है. इससे ऐसे मामलों में मदद मिलती है, जब प्री-पैकेज किए गए डेटाबेस को gzip किया गया हो. ‘अहमद एल-हेल्व ahmedre@gmail.com’ (3e6792, b/146911060) को धन्यवाद

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

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

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

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

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

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

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

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

बाहरी योगदान

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

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

  • प्रीपैकेज किए गए 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)
  • Room इंक्रीमेंटल एनोटेशन प्रोसेसिंग का विकल्प अब डिफ़ॉल्ट रूप से चालू है. (b/112110217)

वर्शन 2.3.0-alpha01

10 जून, 2020

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

नई सुविधाएं

  • Paging 3.0 के साथ काम करता है: Room अब @Query एनोटेट किए गए उन तरीकों के लिए कोड जनरेट करेगा जिनका रिटर्न टाइप androidx.paging.PagingSource है.

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

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

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

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

  • हमने एक गड़बड़ी को ठीक किया है. इस गड़बड़ी की वजह से, Room उस JDK वर्शन का सही तरीके से पता नहीं लगा पाता था जिसका इस्तेमाल, इंक्रीमेंटल एनोटेशन प्रोसेसर को चालू करने के लिए किया जाता है. Blaz Solar (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 में ये बदलाव शामिल हैं.

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

  • हमने एक ऐसी समस्या को ठीक किया है जिसमें Room, JDK के नए वर्शन में इंक्रीमेंटल एनोटेशन प्रोसेसिंग को गलत तरीके से बंद कर देता था. (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) को धन्यवाद
  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, कई इंस्टेंस के अमान्य होने की सुविधा चालू होने पर ऐप्लिकेशन क्रैश हो जाता था. ऐसा तब होता था, जब डेटाबेस में FTS इकाई मौजूद होती थी. (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
  • एक से एक संबंध: POJO फ़ील्ड में @Relation एनोटेशन का इस्तेमाल करके, 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 Incremental Annotation Processor: Room अब Gradle का आइसोलेटिंग एनोटेशन प्रोसेसर है. साथ ही, प्रोसेसर के विकल्प room.incremental के ज़रिए, इंक्रीमेंटेबिलिटी को चालू किया जा सकता है. ज़्यादा जानकारी के लिए, Room कंपाइलर के विकल्प देखें. अगर आपको कोई समस्या आती है, तो कृपया यहां गड़बड़ी की शिकायत करें. हम आने वाले समय में, स्टेबल वर्शन में डिफ़ॉल्ट रूप से इंक्रीमेंटेबिलिटी की सुविधा चालू करने का प्लान बना रहे हैं. b/112110217
  • एक्सपैंडिंग प्रोजेक्शन: कंपाइलर का एक नया एक्सपेरिमेंटल विकल्प room.expandProjection जोड़ा गया है. इससे Room, स्टार प्रोजेक्शन वाली क्वेरी को फिर से लिखता है, ताकि उसमें सिर्फ़ POJO के टाइप को वापस लाने वाले कॉलम शामिल हों. उदाहरण के लिए, @Query("SELECT * FROM Song") वाले डीएओ मैथड के लिए, जो सिर्फ़ दो फ़ील्ड वाले SongIdAndTitle नाम के POJO को दिखाता है. इसके बाद, Room क्वेरी को SELECT id, title FROM Song में फिर से लिखेगा, ताकि रिटर्न टाइप को पूरा करने के लिए कॉलम का कम से कम सेट फ़ेच किया जा सके. इससे, CURSOR_MISMATCH उस चेतावनी को हटा दिया जाता है जो क्वेरी के ऐसे अतिरिक्त कॉलम दिखाने पर दिखती है जो POJO टाइप के किसी भी फ़ील्ड से मेल नहीं खाते.

वर्शन 2.2.0-rc01

5 सितंबर, 2019

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

Room 2.2.0-beta01 के बाद से, सार्वजनिक तौर पर कोई बदलाव नहीं किया गया है.

वर्शन 2.2.0-beta01

22 अगस्त, 2019

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

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

  • उस बग को ठीक किया गया है जिसकी वजह से, कुछ समय बाद कोरूटीन फ़्लो क्वेरी नई वैल्यू फिर से जनरेट करना बंद कर देती थी. (b/139175786)
  • हमने एक गड़बड़ी को ठीक किया है. इस गड़बड़ी की वजह से, Room 1.0 के बाद से माइग्रेट नहीं किए गए डेटाबेस को खोलते समय, Room लेगसी स्कीमा हैश कोड को स्वीकार नहीं करता था. इसकी वजह से, अमान्य स्कीमा की वजह से रनटाइम क्रैश हो जाता था. (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 नाम के POJO को दिखाता है. इसके बाद, Room क्वेरी को SELECT id, title FROM Song में फिर से लिखेगा, ताकि रिटर्न टाइप को पूरा करने के लिए कॉलम का कम से कम सेट फ़ेच किया जा सके. इससे, CURSOR_MISMATCH उस चेतावनी को हटा दिया जाता है जो क्वेरी के ऐसे अतिरिक्त कॉलम दिखाने पर दिखती है जो POJO टाइप के किसी भी फ़ील्ड से मेल नहीं खाते.
  • onDestructiveMigrate एक नया कॉलबैक एपीआई है. इसे RoomDatabase.Callback में जोड़ा गया है. इसका इस्तेमाल तब किया जाता है, जब Room किसी डेटाबेस को डिस्ट्रक्टिव तरीके से माइग्रेट करता है. b/79962330

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

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

वर्शन 2.2.0-alpha01

10 जुलाई, 2019

नई सुविधाएं

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

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

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

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

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

वर्शन 2.1.0

वर्शन 2.1.0

13 जून, 2019

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

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

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

वर्शन 2.1.0-rc01

29 मई, 2019

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

  • Room को शुरू करने से जुड़ी गड़बड़ी को ठीक किया गया है. यह गड़बड़ी, पहले से सेट अप किए गए 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 { } रैपर को स्किप नहीं किया जा सकेगा.

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

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

वर्शन 2.1.0-alpha06

22 मार्च, 2019

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

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

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

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

वर्शन 2.1.0-alpha05

13 मार्च, 2019

नई सुविधाएं

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

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

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

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

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

मौजूदा समस्याएं

  • Room 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 गड़बड़ी दिखाएगा. लेन-देन थ्रेड तक सीमित होते हैं. इसलिए, फ़िलहाल Room के लिए, ऐसे फ़ंक्शन के आस-पास लेन-देन शुरू और खत्म करना मुमकिन नहीं है जो अलग-अलग थ्रेड में क्वेरी कर सकता है. b/120109336
  • OnConflictStrategy.FAIL और OnConflictStrategy.ROLLBACK को @Deprecated कर दिया गया है, क्योंकि ये Android के मौजूदा SQLite बाइंडिंग के साथ सही तरीके से काम नहीं करते. b/117266738

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

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

वर्शन 2.1.0-alpha03

4 दिसंबर, 2018

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

  • @Fts3/@Fts4 में मौजूद FTS tokenizer अब Enum के बजाय String लेता है. इससे 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
  • एक गड़बड़ी को ठीक किया गया है. इसमें Room, IN एक्सप्रेशन के आर्ग्युमेंट के तौर पर, अन्य Collection के अलग-अलग वर्शन को अस्वीकार कर देता था. b/119884035
  • उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, Room से मिला LiveData हमेशा के लिए ऑब्ज़र्व किए जाने पर, गार्बेज कलेक्शन में चला जाता था. इस वजह से, वह नया डेटा नहीं भेज पाता था. b/74477406
  • लॉक के विवाद को कम करने के लिए, RoomDatabase के क्लोज़ लॉक को अपडेट किया गया. b/117900450

वर्शन 2.1.0-alpha02

30 अक्टूबर, 2018

नई सुविधाएं

  • @Relation में @DatabaseView को रेफ़रंस करने की सुविधा जोड़ी गई. b/117680932

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

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

वर्शन 2.1.0-alpha01

8 अक्टूबर, 2018

नई सुविधाएं

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

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

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

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

  • दो समस्याओं को ठीक किया गया है. इनमें से एक समस्या में, Room को शुरू करते समय खराब डेटाबेस या गलत माइग्रेशन से ठीक से रिकवर नहीं किया जा सका. b/111504749 और b/111519144
  • अब Room, डेटा क्लास में 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 के लिए सहायता जोड़ी गई
  • जनरेट किए गए डीएओ और डेटाबेस के लागू होने की प्रोसेस अब पूरी हो गई है

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

  • "cannot find getter for field" गड़बड़ी b/73334503 में क्लास/फ़ील्ड का नाम बताएं
  • RoomOpenHelper के पुराने वर्शन के साथ Room के पुराने वर्शन के काम करने से जुड़ी समस्या ठीक की गई b/110197391

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

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

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 के बजाय Room 1.1.1-rc1 का इस्तेमाल करें.

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

वर्शन 1.1.0

वर्शन 1.1.0-beta3

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 प्रॉपर्टी के लिए किसी भी Pojo को स्वीकार करता है. हालांकि, Pojo को अपने Embedded फ़ील्ड या Relation के ज़रिए एक या उससे ज़्यादा इकाइयों को रेफ़रंस देना होगा. b/74041772
  • पेजिंग: Room के DataSource को लागू करने की सुविधा अब एक से ज़्यादा टेबल की डिपेंडेंसी (जैसे कि संबंध और जॉइन) को सही तरीके से मैनेज करती है. पहले, ये क्वेरी नए नतीजे ट्रिगर नहीं कर पाती थीं या कंपाइल नहीं हो पाती थीं. b/74128314

वर्शन 1.1.0-alpha1

22 जनवरी, 2018

नई सुविधाएं

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

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

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