با آرم گذاری Insert@ می قدرت متدی طراحی اپلیکیشن در مشهد که برای ورود داده تازه به جدول میباشد را مشخص و معلوم کرد. این مشی کلید مهم مصرف شده برای داده تازه را بر می گرداند. از جملهً در کد پایین کلید اساسی از نوع long میباشد:
@Dao
public interface UserDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
// return primary key as Long
public Long insertUser(User user);
در صورتیکه DAO مشتمل بر یکسری پارامتر باشد ، رایاپارس یک سری کلید اساسی نیز قابل رجوع و برگشت است:
@Dao
public interface UserDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
public Long[] insertUser(User... users);
زیرا نباید در Thread اساسی با دیتابیس عمل فرمائید، بایستی فعالیت را در یک Thread غیروابسته جاری ساختن دهید:
final UserDao userDao = ((MyDatabaseApplication) getApplicationContext()).getMyDatabase().userDao();
AsyncTask.execute(new Runnable() {
@Override
protected void run() {
userDao.insertUsers(users);
}
});
حذف اطلاعات
برای حذف اطلاعات از نماد گذاری Delete@ به کار گیری میکنیم:
@Delete
public void deleteUser(User user);
@Delete
public void deleteAll(User user1, User user2);
تراکنش های دیتابیس
تراکنش به تیم دستوراتی در دیتابیس میگوییم که بایستی به طور یک فرمان واحد انجام خواهد شد یعنی یا این که کلیه اوامر تراکنش پیروز خواهد شد یا این که در شرایطیکه یکیاز دستورها ناموفق بود موقعیت دیتابیس به فرصت پیش از اجرای اولی امر بازگردد گویی به هیچ عنوانً تراکنش ایفا نشده. یعنی تک تک اوامر درون یک تراکنش واحد می بایست به طور کلیه یا این که هیچ جاری ساختن گردد. در کد پایین یک طرز برای اجرای تراکنش ها در Room را میبینید:
((MyDatabaseApplication) getApplicationContext()).getMyDatabase().runInTransaction(new Runnable() {
@Override
public void run() {
UserDao userDao = ((MyDatabaseApplication) getApplicationContext()).getMyDatabase().userDao();
userDao.insertOrganization(organization);
userDao.insertUser(user);
}
});