- Cours: M3106
- Responsable: Sébastien NEDJAR
- Enseignants: Sébastien NEDJAR
- Besoin d'aide ?
- La page Piazza de ce cours.
- Consulter et/ou créér des issues.
- Email pour une question d'ordre privée, ou pour convenir d'un rendez-vous physique.
Test de JDBC donné en 2015 aux étudiants de l'IUT d'Aix-Marseille
Remarque : Les événements et les situations de ce sujet étant purement fictifs, toute ressemblance avec des événements et des situations existantes ou ayant existé ne saurait être que fortuite.
Comme tous les étudiants informaticiens depuis plus d’une année, vous commencez à ne plus ressentir le besoin du contact social. Plutôt que de fréquenter des sites pour essayer de sortir et/ou rencontrer d’autres individus vaguement humains, vous décidez de développer une nouvelle plateforme : OnVaGeeker (abrégé en OVG). Elle rassemblera toutes les personnes préférant s’adonner à leurs dévorantes passions plutôt que de développer des relations amicales.
Chaque geek, en plus de ses coordonnées, se voit attribuer une catégorie en fonction de sa passion principale (Dev, Cosplay, JdR, Manga, Jeux vidéo, Reblochon, ...). Une fois enregistré, il peut proposer des projets qu’il essayera tant bien que mal de réaliser sans l’aide d’aucun autre geek. Chaque projet sera classé en fonction de son thème (Concours, Convention, Hackathon, Tartiflette, ... ). L’application est constituée des tables suivantes :
PROJET(ID_P, LIBELLE, DESCRIPTION_P, ID_T#, ID_G#)
THEME (ID_T, NOM_T, DESCRIPTION_T)
GEEK (ID_G, NOM_G, PRENOM, ADRESSE, CATEGORIE)
Par convention, les clefs primaires sont en italique et les clefs étrangères sont postfixées par le symbole #.
Vous supposerez que vous disposez des classes d’entité associées à chaque relation de cette base de données. Chacune de ces classes respecte la convention Java Bean (constructeur par défaut, setter/getter, equals/hashcode, toString).
- Écrire la déclaration de la classe
DAOProjet
qui implémente l’interfaceDAO<Projet>
(La définition de l’interface vous est donnée page suivante). Dans un premier temps, vous n’implémenterez aucune méthode de cette classe. - Implémenter la méthode
delete(Projet projet)
de la classeDAOProjet
. - Implémenter la méthode
findAll()
de la classeDAOProjet
. Pour cette question, ne chargez pas les associations hiérarchiques. - Implémenter la méthode
getById(int id)
de la classeDAOProjet
. Pour cette question vous devez correctement gérer le chargement des objets matérialisant les associations hiérarchiques.
public interface DAO<T> {
// Permet la suppression d'un tuple de la base
public boolean delete(T obj);
// Permet de récupérer tous les objets d'une table
public List<T> findAll();
// Permet de récupérer un objet via son ID
public T getById(int id);
// Permet de créer une entrée dans la base de données par rapport
// à un objet
public T insert(T obj);
// Permet de mettre à jour un tuple dans la base à partir d'un
// objet passé en paramètre
public boolean update(T obj);
}