Sobes.tech
Junior

Šta je biblioteka Room?

sobes.tech АИ

Одговор од АИ

Room je trajna biblioteka koja pruža apstraktni sloj iznad SQLite-a za pojednostavljenje pristupa bazi podataka na Android-u. Ona je deo arhitektonskih komponenti i obezbeđuje strožu proveru upita tokom kompilacije.

Glavne komponente Room-a:

  • Entity: Klasa koja predstavlja tabelu u bazi podataka. Obeležena je sa @Entity. Svako polje Entity koje treba sačuvati mora biti ili javno polje ili imati javni getter.
    @Entity(tableName = "users")
    data class User(
        @PrimaryKey val id: Int,
        val name: String
    )
    
  • DAO (Data Access Object): Interfejs ili apstraktna klasa koja sadrži metode za interakciju sa bazom podataka (ubacivanje, ažuriranje, brisanje, upiti). Obeležena je sa @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: Apstraktna klasa koja nasleđuje RoomDatabase. Povezuje Entity i DAO, pružajući tačke pristupa DAO-u. Obeležena je sa @Database.
    @Database(entities = [User::class], version = 1)
    abstract class AppDatabase : RoomDatabase() {
        abstract fun userDao(): UserDao
    }
    

Prednosti Room-a:

  • Provera tokom vremena kompilacije: Proverava SQL upite tokom kompilacije, smanjujući broj grešaka tokom izvršavanja.
  • Lakša integracija sa arhitektonskim komponentama: Lako za korišćenje sa LiveData i Paging Library.
  • Smanjenje boilerplate koda: Room generiše većinu potrebnog koda za rad sa bazom podataka.
  • Podrška za Coroutines i Flow: Pogodna integracija sa modernim pristupima asinhronog programiranja.

Room apstrahuje detalje rada sa SQLite-om, nudeći sigurniji i jednostavniji način za interakciju sa lokalnom bazom podataka.