Advertisement
Xsufu

Создание класса БД

Jun 7th, 2022 (edited)
1,211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.55 KB | None | 0 0
  1. /**
  2.  * Файл для класса БД. Название - ItemRoomDatabase
  3.  * Название класса сущности - Item
  4.  */
  5.  
  6. import android.content.Context
  7. import androidx.room.Database
  8. import androidx.room.Room
  9. import androidx.room.RoomDatabase
  10.  
  11. @Database(entities = [Item::class], version = 1, exportSchema = false)
  12. abstract class ItemRoomDatabase: RoomDatabase() {
  13.     /**
  14.      * Функция возвращает DAO
  15.      */
  16.     abstract fun itemDao(): ItemDao
  17.     companion object {
  18.         /**
  19.          * Переменная сохраняет ссылку на БД.
  20.          *
  21.          * Аннотация говорит, что переменная не кэшируется
  22.          * и все записи и чтения будут выполняться в основную память.
  23.          * Изменения, внесенные одним потоком в [INSTANCE], видны всем другим потокам.
  24.          */
  25.         @Volatile
  26.         private var INSTANCE: ItemRoomDatabase? = null
  27.  
  28.         fun getDatabase(context: Context): ItemRoomDatabase {
  29.             return INSTANCE ?: synchronized(this) {
  30.                 val instance = Room.databaseBuilder(
  31.                     context.applicationContext,
  32.                     ItemRoomDatabase::class.java,
  33.                     "item_database"
  34.                 )
  35.                     .fallbackToDestructiveMigration()
  36.                     .build()
  37.                 INSTANCE = instance
  38.                 return instance
  39.             }
  40.         }
  41.     }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement