6 / 8
Sukurk NoteDatabase su singleton
Tame pačiame pakete sukurk NoteDatabase.kt.
Ką tai daro:
@Database(entities = [Note::class], version = 1)— viena lentelė, pirmoji schemos versija. Jei vėliau pakeisiNotelauką, padidinsiversionir parašysiMigration.abstract fun noteDao(): NoteDao— Room implementuos.- Singleton pattern su
@Volatileirsynchronized— užtikrina, kad visa programa naudoja vieną duomenų bazės instance. Dvi instance būtų brangu ir nesinchronizuotų rašymo. exportSchema = false— neeksportuoja JSON schemos failo. Realiame produkte tai įjungtum, kad sektum migracijas, bet šio kurso tikslams nereikia.
Kodėl klasė abstract? — Room generuoja klasę NoteDatabase_Impl, kuri paveldi šią abstract klasę ir implementuoja noteDao(). Tu niekada nematysi _Impl — Room ją sukuria už kulisų.