فئة قاعدة بيانات Room
أنشئ قاعدة بياناتك واصل إليها
فئة قاعدة بيانات Room درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 4 دروس في المجموع.
ربط الأجزاء معًا
تُعد فئة قاعدة البيانات نقطة الوصول الرئيسية. فهي تسرد الكيانات، وتعلن الإصدار، وتتيح DAOs.
التعليق التوضيحي @Database
أنشئ فئة مجردة ترث من RoomDatabase، ثم ضع عليها التعليق التوضيحي @Database.
import androidx.room.Database
import androidx.room.RoomDatabase
@Database(
entities = [User::class],
version = 1
)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}سرد الكيانات والإصدار
تُخبر مصفوفة entities Room بالجداول التي ينبغي إنشاؤها. ويتتبّع رقم version تغييرات المخطط اللازمة لعمليات الترحيل.
إتاحة DAOs
لكل DAO، أعلن عن دالة مجردة تُرجع نوع DAO ذلك. وتتولى Room تنفيذها.
abstract fun userDao(): UserDao
abstract fun noteDao(): NoteDaoإنشاء قاعدة البيانات
استخدم Room.databaseBuilder لإنشاء مثيل. ويحتاج إلى سياق التطبيق، والفئة، واسم قاعدة البيانات.
val db = Room.databaseBuilder(
context.applicationContext,
AppDatabase::class.java,
"app.db"
).build()اجعلها Singleton
إن إنشاء قاعدة بيانات عملية مكلفة، لذا أنشئ مثيلًا واحدًا للتطبيق بأكمله. ويستخدم نمط شائع كائنًا مرافقًا مع أداة getter متزامنة.
companion object {
@Volatile private var INSTANCE: AppDatabase? = null
fun get(context: Context): AppDatabase =
INSTANCE ?: synchronized(this) {
INSTANCE ?: build(context).also { INSTANCE = it }
}
}لماذا يهم استخدام Singleton؟
قد تؤدي مثيلات قواعد البيانات المتعددة إلى فتح اتصالات متعددة بالملف نفسه، مما يسبب عدم الاتساق وهدر الذاكرة. ويحافظ المثيل المشترك الواحد على مصدر واحد للحقيقة.
توفيرها باستخدام Hilt
في التطبيقات الفعلية، توفّر عادةً قاعدة البيانات من خلال حقن الاعتمادات (الموضّح في دورة Hilt) بدلًا من استخدام Singleton يدوي.
@Provides
@Singleton
fun provideDb(@ApplicationContext ctx: Context) =
Room.databaseBuilder(ctx, AppDatabase::class.java, "app.db")
.build()تغييرات المخطط وعمليات الترحيل
عند تغيير Entity، زِد قيمة version وقدّم Migration يصف أوامر SQL اللازمة لتحويل البيانات القديمة.
val MIGRATION_1_2 = object : Migration(1, 2) {
override fun migrate(db: SupportSQLiteDatabase) {
db.execSQL("ALTER TABLE users ADD COLUMN age INTEGER NOT NULL DEFAULT 0")
}
}الترحيل التدميري
أثناء التطوير المبكر، قد تستخدم fallbackToDestructiveMigration()، الذي يحذف الجداول ويعيد إنشاءها بدلًا من ترحيلها. لا تنشر هذا مطلقًا في بيئة الإنتاج مع بيانات مستخدمين فعلية.
الوصول إلى DAOs
بعد حصولك على مثيل قاعدة البيانات، احصل على DAO واستدعِ طرقه داخل coroutine.
val dao = db.userDao()
viewModelScope.launch {
dao.insert(User(1, "Ada", "ada@x.com"))
}تحقق سريع
اختبر مدى فهمك لفئة قاعدة البيانات.
مراجعة
لقد تعلّمت ما يلي:
- يسرد
@Databaseالكيانات، ويعيّن إصدارًا، ويتيح DAOs. - أنشئه باستخدام
Room.databaseBuilderباعتباره Singleton. - تحتاج تغييرات المخطط إلى زيادة الإصدار وإضافة Migration.
الأسئلة الشائعة
هل درس «فئة قاعدة بيانات Room» مجاني؟
نعم — نص درس «فئة قاعدة بيانات Room» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 4 دروس في المجموع.
ماذا ستتعلم في «فئة قاعدة بيانات Room»؟
أنشئ قاعدة بياناتك واصل إليها تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟
لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «فئة قاعدة بيانات Room»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟
نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الكيانات وDAOs
- فئة قاعدة بيانات Room
- الاستعلامات والعلاقات
- مراقبة البيانات باستخدام Flow