1. Introduction
Après avoir développé une application de calculatrice, l'étape suivante consiste à créer une application capable de conserver les données de manière permanente. Pour cela, Android met à disposition une base de données locale appelée SQLite. Afin de simplifier son utilisation, Google recommande aujourd'hui l'utilisation de la bibliothèque Room, qui constitue une couche d'abstraction moderne au-dessus de SQLite.
L'application To-Do List (Liste de tâches) est un excellent exemple permettant de découvrir la gestion des bases de données locales. Elle offre à l'utilisateur la possibilité d'ajouter, consulter, modifier et supprimer des tâches, même après la fermeture de l'application.
2. SQLite et Room
SQLite est une base de données relationnelle légère intégrée directement au système Android. Toutes les données sont enregistrées dans un fichier local présent sur l'appareil, sans nécessiter de connexion Internet.
Bien que SQLite soit très performant, son utilisation directe demande l'écriture de nombreuses requêtes SQL. Pour simplifier le développement, Google propose Room Persistence Library, une bibliothèque officielle qui automatise une grande partie du travail.
Room présente plusieurs avantages :
- Réduction de la quantité de code à écrire.
- Vérification des requêtes SQL à la compilation.
- Meilleure organisation du projet.
- Maintenance plus simple.
- Compatibilité avec l'architecture MVVM.
3. Architecture de l'application
L'application To-Do List est composée de plusieurs éléments :
- Entity : représente la table de la base de données.
- DAO (Data Access Object) : contient les opérations SQL.
- Room Database : gère la connexion avec SQLite.
- MainActivity : affiche les tâches et gère les interactions utilisateur.
L'architecture peut être représentée de la manière suivante :
Utilisateur
│
▼
MainActivity
│
▼
DAO (CRUD)
│
▼
Room Database
│
▼
SQLite
4. Création de l'entité Task
Chaque tâche est représentée par une classe Java annotée avec @Entity.
@Entity(tableName = "tasks")
public class Task {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "titre")
private String titre;
public Task(String titre){
this.titre = titre;
}
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String getTitre(){
return titre;
}
public void setTitre(String titre){
this.titre = titre;
}
}
Analyse :
@Entityindique que cette classe correspond à une table SQLite.@PrimaryKeydéfinit la clé primaire.autoGenerate = truepermet à Room de générer automatiquement l'identifiant.@ColumnInfodéfinit le nom de la colonne dans la base de données.
5. Création du DAO
Le DAO contient toutes les opérations CRUD.
@Dao
public interface TaskDao {
@Insert
void insert(Task task);
@Update
void update(Task task);
@Delete
void delete(Task task);
@Query("SELECT * FROM tasks ORDER BY id DESC")
List<Task> getAllTasks();
}
Les annotations utilisées sont :
- @Insert: ajoute une nouvelle tâche.
- @Update: modifie une tâche existante.
- @Delete: supprime une tâche.
- @Query: exécute une requête SQL personnalisée.
6. Création de la base de données
Room nécessite une classe héritant de RoomDatabase.
@Database(entities = {Task.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract TaskDao taskDao();
}
Cette classe représente la base de données locale de l'application.
7. Interface utilisateur
L'interface comporte :
- Un champ
EditTextpermettant de saisir une nouvelle tâche. - Un bouton Ajouter.
- Une
RecyclerViewaffichant toutes les tâches enregistrées.
<EditText
android:id="@+id/editTask"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Nouvelle tâche"/>
<Button
android:id="@+id/btnAjouter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Ajouter"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
8. Fonctionnement de l'application
Le déroulement de l'application est le suivant :
- L'utilisateur saisit une tâche.
- Il clique sur le bouton Ajouter.
- La tâche est enregistrée dans Room.
- Room sauvegarde automatiquement les données dans SQLite.
- La RecyclerView recharge les données et affiche immédiatement la nouvelle tâche.
- Les tâches restent disponibles même après la fermeture de l'application.
9. Les opérations CRUD
Cette application met en œuvre les quatre opérations fondamentales d'une base de données :
| Opération | Description |
|---|---|
| Create | Ajouter une nouvelle tâche. |
| Read | Afficher toutes les tâches enregistrées. |
| Update | Modifier une tâche existante. |
| Delete | Supprimer une tâche. |
10. Avantages de Room
- Code plus propre et plus lisible.
- Moins d'erreurs SQL.
- Meilleure organisation du projet.
- Maintenance facilitée.
- Excellentes performances.
- Intégration avec LiveData, ViewModel et MVVM.
- Base de données entièrement locale, sans connexion Internet.
11. Résultat obtenu
À la fin de cette application, l'utilisateur peut :
- Ajouter de nouvelles tâches.
- Afficher toutes les tâches enregistrées.
- Modifier une tâche existante.
- Supprimer une tâche terminée.
- Conserver automatiquement les données après la fermeture de l'application.
Rédigé et structuré par : Med Khalil Kribi