یکشنبه ۱۵ آبان ۰۱ | ۱۱:۳۴ ۱۶۶ بازديد
Room از مبدل های نوع مدد می نماید.
نوع داده در کلاس را از نوع Date مشخص و معلوم فرمائید:
@ColumnInfo
Date timestamp;
آن گاه میتوانید یک کلاس DataConverter شبیه کلاس رایاپارس تحت تمجید فرمایید:
// Mohamadreza Amani
// Email: help4usr@gmail.com
public class DateConverter {
@TypeConverter
public static Date toDate(Long timestamp) {
return timestamp == null ? null : new Date(timestamp);
}
@TypeConverter
public static Long toTimestamp(Date date) {
return date == null ? null : date.getTime();
}
}
این کلاس نوع های Date و Long را به هم تبدیل می نماید. طراحی اپلیکیشن در مشهد Room با یاری این کلاس نوع داده Long را در دیتابیس ذخیره می نماید اما در کلاس شما نوع داده Date را به شما ارائه میدهد.
تفاوت ROOM با بقیه کتابخانه های ORM چیست؟
ORM مخفف Object Relational Mapping میباشد و به کتابخانه هایی گفته می گردد که دیتابیس را به طور شی هایی درون کد نرم افزار در دسترس قرار میدهند. یکسری جنبه اصلی در Room وجود داراست که با طرز سنتی مصرف شده در کتابخانه های تبدیل جداول دیتابیس به اشیاء (کتابخانه های ORM) متفاوتند:
معمولاً کتابخانه های ORM ذیل گروه ای از دستورها SQL را مهیا می نمایند. جداول به طور اشیای جاوا تمجید میشوند و ارتباط فی مابین این جداول مشخص و معلوم می نمایند که چه نوع دستوراتی از SQL را می اقتدار به کار گرفت. در Room امرها SQL برای وارد کردن اطلاعات ، آپ دیت رسانی اطلاعات ، حذف کردن اطلاعات و اتصالات (join) بغرنج میان جداول به طور اشیای منحصربهفرد دسترسی به اطلاعات (DAO) تعریف و تمجید میگردند. DAO مخفف عبارت Data Access Object میباشد. داده هایی که از این کوئری ها بدست میآید به شی های جاوا تبدیل میشوند و باطن یاد قرار میگیرند تا دسترسی به آنان شل خیس باشد. بنابراین ، هیچ ذهنی درباره ی کیفیت دسترسی به اطلاعات نیست و تعاریف جداول جداگانه از کوئری های حقیقی و واقعی اعمال میشود.
ORM ها معمولاً ارتباط های « یک به یک » و « یک به یکسری » درون دیتابیس را به طور ارتباط در میان جداول رئیس می نمایند و Interface ها یا این که دسته ای از رابط ها آماده می نمایند که در پشت صحنه کوئری های SQL را انجام می نمایند. به جهت تهیه کردن عملکرد بیشتر Room برخلاف این نحوه تعریفوتمجید مصرح این پیوندها را اجباری نموده است. پس در Room کوئری بایستی به طور اشیای DAO تمجید گردد و داده هایی که از این DAO ها بدست میآید بایستی به صورت مصرح به اشیای مطلوب جاوا تبدیل شوند.
یک تفاوت دیگر این میباشد که Room نیازی به تعریفوتمجید جداول SQL شما تحت عنوان یک شی منفرد جاوا ندارد و با اذن دادن به تعریفوتمجید بقیه شی ءها Java جاوا تحت عنوان جزئی از یک جدول قابلیت و امکان محافظت کپسوله سازی شی ءها (قرار دادن هر شی با آحاد اجزای آن باطن یک کلاس) را مهیا می نماید. دستورها ابتدایی ساخت و ساز، تلاوت، آپ تو دیت رسانی و حذف اطلاعات (CRUD) می بایست باطن شی اختصاصی به دسترسی به اطلاعات (DAO) قرار گیرد. یک تفاوت عمده دراین میباشد که نمی اقتدار پرس و جوها را در Thread اساسی ایفا اعطا کرد. ضمن این ، می اقتدار شی ها را با AsyncTask یا این که با به کارگیری از طریق runInTransaction وارد کرد.
اصول روانشناسی طراحی اپلیکیشن که باید بدانید