1. خانه
  2. مجله لیموناد
  3. برنامه نویسی
  4. توسعه نرم افزار موبایل
  5. Android
  6. دیتابیس room چیست و چرا room پرکاربرد شده است

دیتابیس room چیست و چرا room پرکاربرد شده است

نویسنده:

زمان مطالعه: 4 دقیقه

دیتابیس room چیست

دیتابیس room چیست و چرا room پرکاربرد شده است

نویسنده:

مطالعه: 4 دقیقه

ابتدا بررسی کنیم دیتابیس room چیست و سپس به بررسی مشکلات sqlite بپردازیم که room حل کرده است و تبدیل به انتخاب مناسب برای دیتابیس داخلی اپلیکیشن اندروید شده است.

دیتابیس Room چیست؟

room در اصل یک دیتابیس نیست و orm است که در سال ۲۰۱۸ گوگل آن را در مجموعه ی کامپوننت  JetPack اضافه کرد. پس برای این که بدانیم روم چیست باید بدانیم که orm چیست که در ادامه به آن می پردازیم

room با ایجاد یک لایه مجازی قبل از sqlite علاوه بر بهره بری کامل از قدرت دیتابیس، کار با آن را آسان می کند و امکانات زیادی را در اختیار برنامه نویسان اندروید قرار می دهد تا به راحتی با دیتابیس داخلی کار کنند.

orm چیست و چه مزیتی دارد

ORM یا Object-Relational Mapping روشی است که سال هاست در زبان های backend مثل c# یا جاوا مورد استفاده قرار می گیرد. Orm معروف برای سی شارپ enitiy framework است و اندروید به دلیل این که نسبتا نو پا است در سال 2018 room برای آن عرض شده است.

در شیوه سنتی برای دسترسی به دیتابیس باید کئوری نوشته می شد، اما با وجود Orm کار با دیتابیس بسیار راحت و سریع شده است. orm تمام جدول های درون دیتابیس بروی مدل ها مپ می کند و مدل هایی را مطابق دیتابیس ایجاد می کند. در زیر با مشاهده مثالی کامل متوجه موضوع می شویم.

بیشتر بخوانید  ASP.NET Core چیست و تفاوت آن با asp.net mvc چیست

دریافت اطلاعات کاربران در روش سنتی: [cc lang=”sql” tab_size=”2″ lines=”5″] select * from user
[/cc]

این روش اتصال به پایگاه داده دارای چند مشکل است.

  1. وقتی تعداد ستون های جدول زیاد است و کوئری ها پیچیده است احتمال خطا زیاد می شود.
  2. توسعه و نوشتن دستورات دشوار می شود.
  3. در اتصال به پایگاه داده های دیگر نیاز به تغییر تمام کوئری ها داریم.
  4. خیال شما را راحت کنم از نظر مهندسی نرم افزار این روش بسیار فاجعه بود در حال حاضر در دنیا نرم افزار علاوه  orm از data access layer استفاده می شود. که پیشنهاد می کنم آن را هم سرچ و مطلاعه کنید.

برای گرفتن کاربران با استفاده از entity framework در سی شارپ به کدی مثل زیر نیاز داریم.

[cc lang=”c#” tab_size=”2″ lines=”5″] db.users.tolist
[/cc]

مزیت استفاده از orm در ارتباط با دیتابیس

  1. خطا کاهش پیدا می کند و در زمان کامپایال خطا را مشاهده می کنید.
  2. با تغییر دیتابیس به راحتی مدل شما هم به آن آپ دیت می شود. فرض کنید که در یک تابع user ویرایش می شود در حالت قبل پس از افزودن ستون به جدول user باید تمام کوئری ها تغییر پیدا کند اما با استفاده از orm شما نیازی به تغییر ندارید.
    [cc lang=”c#” tab_size=”2″ lines=”5″] db.users.edit(newuser)db.savechage
    [/cc]
  3. امکان استفاده از dal یا همون data access layer با Orm مهیا شده است.
  4.  و ….

تقریبا این موضوع قطعی است که باید برای استفاده از دیتابیس داخلی ای مثل sqlite از یک orm استفاده کرد از آنجایی که گوگل پشتیبان room است استفاده از room کاملا پیشنهاد می شود.

بیشتر بخوانید  ویژگی های جدید بوت استرپ 4 نسبت به نسخه 3

توضیح فنی از نحوه کار room

بنابراین در دیتابیس Room ما به وسیله annotation (حاشیه نویسی) ها می توانیم انواع و اقسام Query هایی که در دیتابیس Sqlite وجود داشت را اینجا هم استفاده کنیم.

ساختار کلی استفاده از دیتابیس Room مانند شکل زیر است:

دیتابیس room چیست

دیتابیس room چیست

توضیحات عکس بالا:

Entity: یکی از انوتیشن های Room است که در ساخت جدول برای دیتابیس استفاده می شود.
SQLite: اطلاعات اپلیکشن شما در هر دیوایسی در دیتابیس مورد نظر ذخیره خواهند شد . Room این فرایند ذخیره سازی را به کمک sqlite راحت کرده است و انجام میدهد.
DAO : مخفف عبارت Data access object است . تمامی کوئری هایی که برای دیتابیس باید استفاده کنید باید در این کلاس فراخوانی شوند. کوئری هایی مانند Delete، Insert و Update
Room database: بالاترین سطح SQLite database که برای مدیریت با SQLiteOpenHelper است .که به کمک کلاس DAO تمامی کوئری ها را مدیریت و پردازش می کند.
Repository : کلاسی هست که توسط خود شما ساخته می شود که وظیفه ی ذخیره سازی منابع را دارد که به مانند پل ارتباطی بین مدل و دیتابیس است .
ViewModel :کلاس مدلی که پل ارتباطی بین UI و Repository هست. تمامی المنت هایی که در UI برای دیتابیس مورد استفاده هستند به راحتی با ریپازیتوری دیتابیس در تعامل خواهند بود که در این جا به راحتی می توان از LiveData استفاده کرد.
LiveData : لایو دیتا به کمک observed تمامی دیتا را در اخرین state ذخیره می کند و هنگام تغییرات تمامی دیتا سریعا آپدیت می شود.این کامپونتت از LifeCycle پشتیبانی می کند.لایو دیتا به صورت اتوماتیک تمامی تغییرات ui را در لحظه آپدیت می کند.

بیشتر بخوانید  6 سایت برتر با جنگو (Django)

چرا از یک پایگاه داده دیگر استفاده نکنیم؟

البته گزینه های مختلفی موجود می باشد تا به عنوان پایگاه داده در برنامه خود استفاده کنید.
شما میتوانید اینکار را با راه حل هایی موجود اندروید مثلا SQLiteOpenHelper یا
از یک کتابخانه مثل Realm , OrmLite , greenDAO و … استفاده کنید .
با این وجود هیچ کدام از این راه حل ها , مزیتی ندارند. در Room :
• پرس و جو (query ) ها در زمان کامپایل تایید می شوند — هر Query@ و Entity@ در زمان کامپایل مورد بررسی قرار می گیرند . بنابراین هیچ خطری در زمان اجرا وجود ندارد که باعث crash شدن اپلیکیشن شود . ( تنها syntax را بررسی نمی کند بلکه جداول موجود را هم چک می کند )
• Boilerplate در آن بسیار کم است .
• با سایر اجزا معماری کاملا سازگار و یکپارچه می باشد( مثل LiveData ) .

سه جز اصلی درمعماری Room وجود دارد:

1. Database: از دارنده پایگاه‌داده و به عنوان نقطه دسترسی اصلی برای اتصال اساسی با برنامه کاربردی شما، داده‌های ارتباطی استفاده می‌شود.

Entity.2: در دیتابیس Room این کلمه به معنی جدول است و معادل همان Table است در دیتابیس Sqlite . و در این کلاس ما جداول مربوط به دیتابیس خود را ایجاد می کنیم.

DAO.3: مخفف کلمه Database Access Object است و شامل یک سری متدها است که می توان به وسیله آنها به دیتابیس دسترسی پیدا کرد. (این یکی از مزیتهای دیتابیس Room است).

معرفی دوره آموزش room

در ویدیو های اولی این دوره به طور ویدیویی هم با دیتابیس room آشنا می شوید.

آموزش room در اندروید توسط استاد محمد قاسمی

بهترین دوره های آموزش فتوشاپ
آموزش زبان انگلیسی - زبان ترکی - زبان آلمنی - ترکی استانبول
آموزش ورزش در خانه
آموزش های درس و مدرسه
دوره های آموزش ویدیویی ساز و موسیقی

پیشنهاد می‌کنیم این مقالات را هم بخوانید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

شاید این مقالات را دوست داشته باشید:

آموزش زبان انگلیسی - زبان ترکی - زبان آلمنی - ترکی استانبول
آموزش ورزش در خانه
دوره های آموزش ویدیویی ساز و موسیقی
آموزش های درس و مدرسه
فهرست