Jimmy Gilbert
Professeur au Cégep de Sainte-Foy et Cégep Édouard-Montpetit
Introduction (en cours)
Exercice sur SQLite
Théorie sur Pattern Repository
Temps en équipe TP3
Mettre en pratique l'utilisation de SQLite sous Android
Comprendre comment utiliser le Pattern Repository
Durée: 45 - 60 minutes
Faites la création d'une BD SQLite nommée "beatsaber"
Faites une table nommée player qui contient:
id: id du joueur auto increment
name: nom du joueur
score: score le plus haut du joueur
Faites l'insertion manuelle en java d'une ligne en BD (INSERT)
Afficher les scores à l'écran de votre application mobile (READ)
Remettez tous vos fichiers sur Léa dans exercice 11
Nous devons changer tout le code qui utilise le SQLite
Nous devons tester à nouveau le CRUD
Des bogues de compatibilités SQL pourraient survenir
Etc.!
Si en plein milieu d'un projet, nous voudrions changer de SGBD, quelles seront les problématiques?
Pouvez-vous me nommer des sources de données que vous connaissez?
Pouvez-vous me décrire, dans vos mots, ce qu'est une interface en POO?
L’implémentation d’un « Repository » respecte, en général, un contrat:
-Les classes utilisant ce « Repository » n’ont pas besoin de savoir comment il fonctionne.
-Il est alors aisé de modifier la source de données.
public interface MyObjectRepository {
public void create(MyObject myObject);
public MyObject read(int id);
public List<MyObject> readAll();
public void update(MyObject myObject);
public void delete(int id);
}
public class SQLiteMyObjectRepository implements MyObjectRepository {
private SQLiteDatabase sqLiteDatabase;
public MyObjectRepository(SQLiteDatabase sqLiteDatabase) {
this.sqLiteDatabase = sqLiteDatabase;
}
public void create(MyObject myObject) { /* code SQL ici */ }
public MyObject read(int id) { /* code SQL ici */ }
public List<MyObject> readAll() { /* code SQL ici */ }
public void update(MyObject myObject) { /* code SQL ici */ }
public void delete(int id) { /* code SQL ici */ }
}
SQLiteMyObjectRepository repository;
MyTableDatabaseHelper applicationDatabaseHelper;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
table =
new MyTableDatabaseHelper(this, DATABASE_FILE_NAME);
repository =
new SQLiteMyObjectRepository (table.getWritableDatabase());
}
By Jimmy Gilbert
L’Architecture et les Données