سلام ObjectBox خداحافظ SQLite

آبجکت باکس یه کتابخونه برای اندروید(پلفترم های دیگ) هست که دیتا بیس داخلی رو برای شما فراهم میکنه مزیت هایی که داره اینه که خییلی سریعه به گفته سازنده اش ده برابر سریع تر از دیتابیس های قبلی هست و بعدیش این هست که خیلی آسون میشه استفاده کرد درواقع شما دردسر های sqlite رو ندارید که query بزنید یا با cursor دیتا هارو بخونید راحت همه جا بهش دسترسی داشته باشید نکته بعدی اینه خودش با javaRx یک observer برای هر تیبل داره که اگر خاستید میتونین استفاده کنین و دیگ بترکونین!!https://docs.objectbox.io/getting-startedمیتونین اینجا خیلی راحت استفاده ازش رو شروع کنین اما منم مختصر کمکتون میکنمخب اول از همه توی فایل (build.gradle (project این کد هارو اضافه کنیدbuildscript {ext.objectboxVersion = '2.3.4'repositories {jcenter()}dependencies {// Android Gradle Plugin 3.0.0 or later supportedclasspath 'com.android.tools.build:gradle:3.3.2'classpath &quotio.objectbox:objectbox-gradle-plugin:$objectboxVersion&quot}}و در آخر هم توی فایل (build.gradle (App بعد از کد اندروید این خط رو اضافه کنید(آخرین خط) applyplugin:'io.objectbox' خب حالا یه بار پروژه رو سینک کنید و تموم!اگر خاستید از کاتلین استفاده کنین قبل از خط آبجتک باکس این دو خط هم اضافه کنیدapply plugin: 'kotlin-android' // if using Kotlinapply plugin: 'kotlin-kapt' // if using Kotlinاضافه کردن این کتابخونه تموم شدحالا چطوری ازش استفاده کنیم؟ خب این هم توی لینکی که گزاشتم نوشته ولی بد نیست مختصر بگیم چطور ازش استفاده کنین شما اول باید یک کلاس که از Application ارث برده بسازید و توی فایل manifest این کلاس رو معرفی کنید<application android:name=&quot.App&quot android:allowBackup=&quottrue&quot android:icon=&quot@mipmap/ic_launcher&quot android:label=&quot@string/app_name&quot android:roundIcon=&quot@mipmap/ic_launcher_round&quot android:supportsRtl=&quottrue&quot android:theme=&quot@style/AppTheme&quot>توی اینجا اسم کلاس اپلیکیشن من App بوده ولی هرچیزی میتونه باشهحالا توی کلاس اپ چه کار میکنیم؟ خب اپ اینطوریه که با شروع برنامه یه نمونه ازش ساخته میشه و تا بسته نشدن همه چی این نمونه از بین نمیره پس بهترین جا برای ستاپ کردن دیتا بیسمون هستpublic class App extends Application { private BoxStore boxStore; @Override public void onCreate() { super.onCreate(); MyObjectBox.builder().androidContext(getApplicationContext()).build(); } public BoxStore getBoxStore() { return boxStore; } }خب همونطور که میبینید خیلی سادس باکس استور جایی هست که همه دیتابیس ها میرن اونتو درواقع بهش برای گرفتن دیتا نیاز داریماول متد onCreate رو override میکنید و بعد اون یک خط رو مینویسید فقط یادتون باشه باید یک getter برای باکس استور داشته باشید فعلا تا اینجا صبر کنید تا بگم چطور یه تیبل اضافه کنید و بعد استفاده رو میگمهمونطور که توی خود سایتش گفته و منم از اونجا بهتون میگم به این کد نگاه کنید // User.java@Entitypublic class User {@Id public long id;public String name;}خط اول که یک انوتیشن هست میگه این یک تیبل هست و خط سوم میگه این پراپرتی آی دی هست بعدش هرچی خاستید اضافه کنید و به همین راحتی یه تیبل ساختیدخب حالا گرفتن دیتا@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //گرفتن دیتا بیس BoxStore boxStore = ((App)getApplication).getBoxStore(); //گرفتن تیبل از دیتا بیس Box<User> userBox = boxStore.boxFore(User.class); //گرفتن دیتا از تیبل ArrayList<User> users = userBox.getAll(); }کلاس اپ که گفتیم همون اول ساخته میشه اینجاس دروافع همه اگتیویتی ها به اپ دسترسی دارن اما نمیدونن ما اپ کاستوم خودمون رو گزاشتیم جای دیفالت پس باید اول کستش کنیم به اپ خودمون تا به باکس استور دسترسی داشته باشیم( اگر کست نکنین دسترسی ندارید)بعدی هم برای گرفتن یه تیبل خیلی راحت یه نمونه ازش میسازیم و با متد boxFore اون رو برای کلاس یوزر میگیریمآخر هم که معلومه گفتیم همه دیتا رو بگیر اما میتونین کویری هم بزنین مثلا کسایی که اسمشون محمد هستبه این صورت:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); BoxStore boxStore = ((App)getApplication).getBoxStore(); Box<User> userBox = boxStore.boxFore(User.class); ArrayList<User> users = box.query().equal(User_.name,&quotMohammad&quot).build().find(); }خب با متد کویری میگید که میخام دیتا فیلتر بشه بعد از متد equal استفاده میکنید که اول یک پراپرتی میگیره بعد یک مقدار که بر اساسش فیلتر کنه اگر دقت کنین کلاس User یک آندرلاین نداره ولی آبجکت باکس یک کلاس خودش میسازه که آندرلاین داره شما برای کویری زدن باید از اون استفاده کنین وگرنه کار نمیکنهراستی هنوز نگفتیم چطور دیتا وارد کنید /: کدش این@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); BoxStore boxStore = ((App)getApplication).getBoxStore(); Box<User> userBox = boxStore.boxFore(User.class); User user = new User(); user.name = &quotMohammad&quot userBox.put(user); }با متد put میتونید یک یوزر جدید وارد کنید برای ادیت کردن هم از put باید استفاده کنید ینی اگر آی دی یوزر 3 باشه و یوزر 3 موجود باشه این جدیده رو میزاری جای قدیمیهبرای حذف کردن هم از متد remove استفاده میکنید که یا میتونین آیدی بدید بهش یا خود دیتا مودل یا یک لیستی از چیز هایی که میخاید حذف کنیدخیلی طولانی شد ببخشید اما خیلی کار های خفن این آبجکت باکس مونده توی سایت موجود هست اگر هم خاستید توی قسمت بعدی پیشرفته تر توضیح میدم.امید وارم همیشه شاد باشید.