Sobes.tech
Junior

Room kitabxanası nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Room — bu Android üçün yerli verilənlər bazasına çıxışı sadələşdirmək üçün SQLite üzərində abstrakt qat təmin edən davamlı kitabxanadır. O, Arxitektura Bileşenlərinin bir hissəsidir və sorğuların tərtib zamanı daha sərt yoxlanmasını təmin edir.

Room-un əsas komponentləri:

  • Entity: Verilənlər bazasında cədvəli təmsil edən sinif. @Entity ilə qeyd olunur. Saxlanmalı olan hər Entity sahəsi ya ictimai sahə olmalı, ya da ictimai getter-ə malik olmalıdır.
    @Entity(tableName = "users")
    data class User(
        @PrimaryKey val id: Int,
        val name: String
    )
    
  • DAO (Data Access Object): Verilənlər bazası ilə qarşılıqlı əlaqə üçün metodlar ehtiva edən interfeys və ya abstrakt sinif. @Dao ilə qeyd olunur.
    @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: RoomDatabase-dən irəli gələn abstrakt sinif. Entity və DAO-u birləşdirir və DAO-ya giriş nöqtələri təmin edir. @Database ilə qeyd olunur.
    @Database(entities = [User::class], version = 1)
    abstract class AppDatabase : RoomDatabase() {
        abstract fun userDao(): UserDao
    }
    

Room-un üstünlükləri:

  • Kompilyasiya vaxtında yoxlama: SQL sorğularını tərtib zamanı yoxlayır, bu da icra zamanı səhvləri azaldır.
  • Arxitektura Bileşenləri ilə daha asan inteqrasiya: LiveData və Paging Library ilə asanlıqla istifadə edilə bilər.
  • Boilerplate kodun azaldılması: Room, verilənlər bazası ilə işləmək üçün lazım olan kodun böyük hissəsini avtomatik olaraq yaradır.
  • Coroutines və Flow üçün dəstək: Müasir asinxron proqramlaşdırma yanaşmaları ilə rahat inteqrasiya.

Room SQLite ilə işləmə detalları ilə məşğul olan bütün çətinlikləri soyutlayır və yerli verilənlər bazası ilə qarşılıqlı əlaqəni daha təhlükəsiz və rahat edir.