Sobes.tech
Junior

Kas yra Room biblioteka?

sobes.tech AI

Atsakymas iš AI

Room — tai nuolatinė biblioteka, teikianti abstrakčią sluoksnį virš SQLite, kad būtų supaprastintas prieigos prie duomenų bazės procesas Android. Ji yra Architecture Components dalis ir užtikrina griežtesnę užklausų patikrą kompiliacijos metu:

Pagrindiniai Room komponentai:

  • Entity: Klasė, atstovaujanti duomenų bazės lentelę. Pažymėta @Entity. Kiekvienas Entity laukas, kuris turi būti išsaugotas, turi būti arba viešas laukas, arba turėti viešą getter:
    @Entity(tableName = "users")
    data class User(
        @PrimaryKey val id: Int,
        val name: String
    )
    
  • DAO (Data Access Object): Sąsajos arba abstraktaus klasės, turinčios metodus sąveikai su duomenų baze (įterpimas, atnaujinimas, ištrynimas, užklausos). Pažymėta @Dao:
    @Dao
    interface UserDao {
        @Query("SELECT * FROM users WHERE id = :userId")
        fun getUserById(userId: Int): User?
    
        @Insert(onConflict = OnConflictStrategy.IGNORE)
        suspend fun insertUser(user: User)
    }
    
  • Database: Abstrakti klasė, kuri paveldi iš RoomDatabase. Ji sujungia Entity ir DAO, suteikdama prieigos taškus prie DAO. Pažymėta @Database:
    @Database(entities = [User::class], version = 1)
    abstract class AppDatabase : RoomDatabase() {
        abstract fun userDao(): UserDao
    }
    

Room privalumai:

  • Kompiliacijos metu patikra: SQL užklausų patikra kompiliacijos metu, kas sumažina klaidų skaičių vykdymo metu.
  • Lengva integracija su Architecture Components: Lengva naudoti su LiveData ir Paging Library.
  • Kodo sumažinimas: Room generuoja didžiąją dalį reikalingo kodo darbui su duomenų baze.
  • Coroutines ir Flow palaikymas: Patogi integracija su šiuolaikinėmis asinchroninėmis programavimo metodikomis.

Room abstrakčiai apima SQLite darbo detales, siūlydama saugesnį ir patogesnį būdą sąveikai su vietine duomenų baze.