
آموزش کار با دیتابیس Room در اندروید
آموزش کار با دیتابیس Room در اندروید یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی، آموزش کار کردن با دیتابیس Room در اپلیکیشن های اندروید است که با نام اصلی Android Room Fundamentals از شرکت Pluralsight منتشر شده است.
کار کردن با Room در اپلیکیشن های اندروید
به بیان ساده Room یک کتابخانه ذخیره سازی و یا persistence است که بخشی از android.jetpack می باشد. Room یک لایه انتزاع و یا abstraction layer را سوار بر SQLite در اختیار ما قرار می دهد تا بتوانیم دسترسی به بانک های اطلاعاتی را به سادگی و بدون درگیر شدن با چالش های SQLite انجام بدهیم. در حال حاضر استفاده کردن از Room یک روش بهتر برای data persistence و یا ذخیره سازی داده ها نسبت به دیتابیس های SQLite می باشند. با استفاده کردن از Room می توانید با سادگی بیشتری با بانک های SQLite کار کرده و حجم کدهای تکراری و یا boilerplate code ها را کاهش داده و بتوانیم کوئری های نوشته شده برای SQL را در زمان کامپایل شدن برنامه بررسی کنیم.

چرا باید از Room استفاده کنیم؟
کار کردن با Room مزیت های زیادی را در اختیار ما قرار می دهد که در استفاده کردن از SQLite وجود ندارد. در ادامه به صورت تیتروار به برخی از این مزیت ها می پردازیم.
- امکان بررسی کردن صحت کوئری های SQL در زمان کامپایل شدن برنامه. با استفاده از این قابلیت و امکاناتی از قبیل @Query و @Entity می توانید در زمان کامپایل شدن برنامه، صحت کوئری ها را بررسی کنید. این موضوع کمک می کند تا اپلیکیشن در زمان اجرا شدن دچار مشکل نشود. با استفاده از این قابلیت ها نه تنها می توانید صحت کوئری ها را بررسی کنید بلکه وجود و یا عدم وجود جداول مورد استفاده قرار گرفته را نیز می توان بررسی کرد.
- کاهش حجم کدهای تکراری و یا boilerplate code
- یکپارچه شدن ساده با دیگر architecture component ها از قبیل liveData
چالش های کار کردن با SQLite در اندروید چه چیزهایی هستند؟
در کار کردن با SQLite در اندروید چالش های زیادی وجود دارد که با استفاده کردن از Room می توانیم این چالش ها را حل و فصل کنیم. در ادامه به صورت تیتروار به برخی از این چالش ها می پردازیم.
- هیچ بررسی خاصی برای کوئری های نوشته شده به زبان SQL در زمان کامپایل شدن برنامه انجام نمی شود. برای مثال اگر یک کوئری را بنویسیم که شامل نام های غیرصحیح از ستون های بانک اطلاعاتی باشند برنامه در زمان اجرا شدن دچار خطا شده و امکان اینکه در زمان کامپایل شدن بتوانید این خطا را کشف کنید وجود ندارد.
- پس از ایجاد تغییرات در schema دیتابیس مجبور هستید که کوئری های موجود را به صورت دستی بروزرسانی کنید. این روال می تواند بسیار زمان بر و مستعد ایجاد خطا باشد.
- مجبور هستید حجم زیادی از کدهای تکراری و یا boilerplate code ها را بنویسید. این کدها برای تبدیل کردن کوئری های SQL و نتایج آنها به آبجکت های موجود در جاوا و یا همان POJO ها مورد نیاز می باشند.
طراحی DAO و اجرای عملیات پایگاه داده با Room
برای دسترسی ساختارمند به دادههای ذخیرهشده در اپلیکیشن اندروید، کتابخانه Room از اجزایی استفاده میکند که مسئولیت تعریف دادهها و اجرای عملیات پایگاه داده را از بخش رابط کاربری جدا میکنند. این آموزش اجزای اصلی Room را بررسی میکند و نحوه ایجاد `DAO` و استفاده از `Annotation`ها را آموزش میدهد. با تعریف عملیات موردنیاز در DAO، میتوانید شیوه دسترسی به دادهها را مشخص کنید و فراخوانیهای مربوط به ذخیرهسازی را از منطق نمایش جدا نگه دارید. این ساختار به سازماندهی کد کمک میکند و تغییر یا بررسی عملیات پایگاه داده را سادهتر میسازد.

بخشهای عملی آموزش به اجرای عملیات `INSERT` و `UPDATE` میپردازند و راهاندازی اولیه Room را نیز پوشش میدهند. این مباحث نشان میدهند چگونه دادههای جدید را ذخیره کنید و اطلاعات موجود را هنگام تغییر وضعیت برنامه بهروزرسانی کنید. همچنین، مشاهده محتوای پایگاه داده از داخل Android Studio مطرح میشود تا بتوانید نتیجه عملیات را بررسی کنید و هنگام عیبیابی، به دادههای ذخیرهشده دسترسی داشته باشید. ترکیب تعریف DAO با عملیات واقعی پایگاه داده به شما کمک میکند مسیر رفتوبرگشت داده میان برنامه و لایه ذخیرهسازی را بهتر بشناسید.
هماهنگی Room با ViewModel، LiveData و RecyclerView
مدیریت دادههای پایگاه داده در اپلیکیشن اندروید فقط به ذخیرهسازی محدود نمیشود؛ دادهها باید به شکلی مناسب در رابط کاربری نمایش داده شوند و با تغییر وضعیت برنامه هماهنگ بمانند. این آموزش `Android Architecture Components` و مفهوم `Lifecycle-aware Components` را بررسی میکند و به نقش `ViewModel` و `LiveData` میپردازد. ViewModel میتواند دادههای موردنیاز رابط کاربری را در خود نگه دارد و LiveData راهی برای مشاهده تغییرات داده فراهم میکند. درک این نقشها به طراحی ساختاری کمک میکند که در آن منطق نمایش و دسترسی به پایگاه داده مسئولیتهای مشخصتری داشته باشند.
در بخش عملی، راهاندازی `RecyclerView` برای نمایش دادههای Room بررسی میشود. این اتصال نشان میدهد چگونه اطلاعات ذخیرهشده میتوانند در قالب فهرستی از آیتمها به کاربر ارائه شوند. همچنین، مباحث خواندن دادهها، فیلتر کردن، بهروزرسانی و حذف اطلاعات در کنار یکدیگر قرار میگیرند تا چرخه مدیریت داده در اپلیکیشن روشنتر شود. برای مثال، وقتی محتوای ذخیرهشده تغییر میکند، رابط کاربری باید بتواند دادههای مرتبط را منعکس کند؛ ترکیب اجزای معماری اندروید با Room به سازماندهی این تعامل کمک میکند. این آموزش برای توسعهدهندگانی کاربرد دارد که میخواهند لایه داده و رابط کاربری را در یک اپلیکیشن اندرویدی هماهنگ کنند.
سرفصل مطالب آموزش ویدئویی کار با دیتابیس Room در اندروید
فصل اول: مقدمه دوره آموزشی- مقدمه دوره آموزشی
- پیش نیاز ها و مراجع
- بررسی Android Architecture Components
- مقایسه Room و Sqlite
- بررسی کردن Lifecycle-aware Component ها
- آموزش عملی: کار کردن با Lifecycle-aware Component ها
- بررسی ViewModel
- آموزش عملی: کار کردن با ViewModel
- بررسی LiveData
- آموزش عملی: کار کردن با LiveData
- بررسی اجزای تشکیل دهنده Room
- ایجاد کردن Entity و کار کردن با Annotation ها
- ایجاد کردن DAO و کار کردن با Annotation ها
- ایجاد کردن Database Class برای Room
- انجام عملیات INSERT: بخش اول
- انجام عملیات INSERT: بخش دوم
- نمایش محتوای دیتابیس از درون اندروید استودیو
- جمع بندی
- خواندن داده از درون Room و راه اندازی اولیه پروژه
- راه اندازی کردن RecyclerView برای داده های Room
- واکشی کردن داده ها از درون دیتابیس Room
- جمع بندی
- انجام عملیات دیتابیس Room و راه اندازی اولیه
- انجام عملیات آپدیت بر روی Room: بخش اول
- انجام عملیات آپدیت بر روی Room: بخش دوم
- انجام عملیات Delete بر روی Room
- پیاده سازی عملیات Filtering بر روی Room
- راه اندازی - راه اندازی
- راه اندازی - بدون راه اندازی
- اضافه کردن Repository به پروژه
- نوشتن مایگریشن ها در Room
- استفاده کردن از TypeConverter ها: بخش اول
- استفاده کردن از TypeConverter ها: بخش دوم
- جمع بندی







