استفاده از دیتابیس Room در اندروید
شاید شده باشه تا حالا با خودتون فکر کرده باشین چجوری میشه داخل اپ اندرویدی خودتون اطلاعات رو آفلاین ذخیره و استفاده کنین!؟ یا نیاز داشتین یک ساختار منسجم و مشخص برای ذخیره سازی اطلاعات کاربرتون داخل اپ داشته باشید. در این پست قصد داریم اموزش ساخت یک دیتابیس با یک Entity به نام User رو ببینیم:
در ابتدا این کتابخانه هارو به dependencies خودتون در فایل .gradle اضافه کنید.
// Room components
implementation "android.arch.persistence.room:runtime:$roomComponentsVersion"
annotationProcessor "android.arch.persistence.room:compiler:$roomComponentsVersion"
// Lifecycle components
implementation "android.arch.lifecycle:extensions:$lifecycleComponentsVersion"
annotationProcessor "android.arch.lifecycle:compiler:$lifecycleComponentsVersion"
سپس برای ساخت Entity خود یک class به نام User ایجاد کنید.
@Entity
public class User {
@PrimaryKey
public int uid;
@ColumnInfo(name = "first_name")
public String firstName;
@ColumnInfo(name = "last_name")
public String lastName;
}
- توجه کنید که هر Entity باید حتما شامل یک PrimaryKey باشد.
سپس یک فایل interface با نام UserDao ایجاد کنید.
@Dao
public interface UserDao {
@Query("SELECT * FROM user")
List<User> getAll();
@Query("SELECT * FROM user WHERE uid IN (:userIds)")
List<User> loadAllByIds(int[] userIds);
@Query("SELECT * FROM user WHERE first_name LIKE :first AND " +
"last_name LIKE :last LIMIT 1")
User findByName(String first, String last);
@Insert
void insertAll(User... users);
@Delete
void delete(User user);
}
در این فایل میتوانید query های مورد نیاز خود را اضافه کنید.
و در مرحله اخر:
@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
private static AppDatabase INSTANCE;
public abstract UserDao userDao();
/**
* create db if it dose not exist and then return db
*
* @param context
* @return an object of db
*/
public static AppDatabase getAppDatabase(Context context) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "vitamin_database")
// allow queries on the main thread.
// Don't do this on a real app! See PersistenceBasicSample for an example.
.allowMainThreadQueries()
.build();
}
return INSTANCE;
}
public static void destroyInstance() {
INSTANCE = null;
}
}
در نهایت به راحتی میتوانید اطلاعات خودتون رو به table اضافه، دریافت و یا پاک کنید. کافیست به هنگام نیاز تابع getAppDatabase رو صدا زده و از آن استفاده کنید.



