آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

دیتابیس Room

چهارشنبه, ۴ فروردين ۱۴۰۰، ۱۰:۴۱ ب.ظ

این دیتابیس در واقع ابسترکت شده دیتابیس SQLite هست و سه قسمت اصلی داره:

 

کلاس مدل: همون الگویی که قراره توی دیتابیس ذخیره شه.

اینترفیس DAO: کوئری هایی که قراره روی دیتابیس زده بشه در اینجا تعریف میشه.

کلاس ابسترکت دیتابیس: این کلاس یک متد ابسترکت داره که خروجیش اینترفیس DAO است و از طریق فراخونی این متد میشه به کوئری مورد نظر دست یافت. (این کلاس سینگل تون بوده و خودش متد ابسترکت ذکر شده رو پیاده سازی میکنه)

 سمپل کد:

کلاس مدل: (از نوع data class هست)

@Entity(tableName = "todo_table")
data class ToDo(
    @PrimaryKey(autoGenerate = true)
    var id: Int,
    @ColumnInfo
    var title: String,
    @ColumnInfo
    var priority: Priority,
    @ColumnInfo
    var description: String
)

 

اینترفیس DAO:

 

@Dao
interface ToDoDAO {

    @Query("SELECT * FROM todo_table ORDER BY id ASC")
    fun getAllData() : LiveData<List<ToDo>>

    @Insert(onConflict = OnConflictStrategy.IGNORE)
    suspend fun insertToDo (todo: ToDo)
}

 

کلاس ابسترکت دیتابیس:

@Database(entities = [ToDo::class], version = 1,exportSchema = false)
@TypeConverters(Converter::class)
abstract class ToDoDatabase : RoomDatabase(){
    
    abstract fun todoDao() : ToDoDAO
    
    companion object{
        @Volatile
        private var INSTANCE : ToDoDatabase? = null

        fun getDatabaseInstance(context: Context) : ToDoDatabase{
            if(INSTANCE != null)
                return INSTANCE!!

            synchronized(this){
                INSTANCE = Room
                    .databaseBuilder(
                        context.applicationContext,
                        ToDoDatabase::class.java,
                        "todo_database"
                    )
                    .build()
                return INSTANCE!!

            }
        }
    }
}
موافقین ۰ مخالفین ۰ ۰۰/۰۱/۰۴
میم دال

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی