package Ġcom . example . inventory . data Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Database Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . Room Database Ċ Ċ // Ġit 's Ġabstract Ġbecause ĠRoom Database Ġcreate Ġthe Ġimp Ġfor Ġyou . Ċ // Ġexport Schema Ġ= Ġfalse Ġso Ġyou Ġdon 't Ġkeep Ġschema Ġversion Ġhistory Ġbackups . Ċ @ Database Ġ( entities Ġ= Ġ[ Item :: class ], Ġversion Ġ= Ġ 1 , Ġexport Schema Ġ= Ġfalse ) Ċ abstract Ġclass ĠItem Room Database : ĠRoom Database () Ġ{ ĊĠĠĠ Ġ// Ġso Ġthe ĠDB Ġknow Ġabout Ġthe ĠDao . ĊĠĠĠ Ġabstract Ġfun Ġitem Dao (): ĠItem Dao ĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠ Ġ// Ġbecause Ġit Ġwill Ġnever Ġbe Ġcached Ġ& Ġall Ġwrite Ġ& Ġread Ġwill Ġbe Ġdone Ġfrom Ġmain Ġmemory . ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠINSTANCE : ĠItem Room Database ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Database ( context : ĠContext ): ĠItem Room Database Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠINSTANCE Ġ?: Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠRoom . database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem Room Database :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" item _ database " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĠĠĠĠ Ġ. fallback To Dest ruct ive Migration () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }