Sobes.tech
Junior

Welke database gebruik je in je projecten?

sobes.tech AI

Antwoord van AI

Ik heb verschillende opties gebruikt, afhankelijk van de eisen van het project:

  • Room Persistent Library: Meest gebruikt. Biedt een handige abstractielaag boven SQLite, vermindert de hoeveelheid boilerplate-code aanzienlijk en zorgt voor query-validatie tijdens compilatie. Ideaal voor de meeste typische Android-app-scenario's.
  • SQLite direct: In oude projecten of wanneer zeer lage-level toegang en volledige controle over schema's en queries nodig waren. Vereist meer handmatig werk.
  • Realm: In enkele projecten waar prestaties belangrijk waren bij het werken met grote hoeveelheden gegevens en complexe objecten. Realm is een objectgeoriënteerde database, handig bij het werken met datamodellen.
  • Firebase Realtime Database / Cloud Firestore: Voor projecten die realtime gegevenssynchronisatie tussen apparaten en cloudopslag vereisen. De keuze tussen hen hing af van de datastructuur en querybehoeften. Realtime Database is geschikt voor gegevens in JSON-boomvorm, terwijl Cloud Firestore voor documentcollecties.

De keuze van een specifieke database wordt bepaald door factoren zoals:

  • Volume en type gegevens.
  • Complexiteit van queries.
  • Prestatie-eisen.
  • Behoefte aan gegevenssynchronisatie.
  • Ervaringsniveau van het team.
  • Beschikbaarheid van kant-en-klare oplossingen en bibliotheken.

Een typische implementatie met Room omvat:

// entiteit
@Entity(tableName = "users")
data class User(
    @PrimaryKey val id: Int,
    val name: String
)

// dao
@Dao
interface UserDao {
    @Query("SELECT * FROM users")
    fun getAll(): Flow<List<User>>

    @Insert(onConflict = OnConflictStrategy.IGNORE)
    suspend fun insert(user: User)
}

// database
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}