Ressource
1. Télécharger et lancer le projet
- Lancer Docker Desktop
- Télécharger et importer le projet Maven dans Eclipse
Lancer l’image docker présente dans le Dockerfile : docker compose up
2. Consigne
Note
Ce travail est plus long que les précédents et nécessite un travail de recherche.
2.1 Étudier le pattern DAO
Premièrement renseignez-vous sur le pattern DAO

Et répondre aux questions suivantes :
- A quoi sert un DAO ?
- Où placer la gestion de transaction ?
2.2 Développer
Une bibliothèque souhaite gérer :
- ses livres
- les emprunts réalisés par des utilisateurs
Chaque livre peut être emprunté ou disponible.
Table book
| Champ | Type SQL | Description |
|---|---|---|
| id | INT (PK) | Identifiant du livre |
| title | VARCHAR(255) | Titre |
| author | VARCHAR(255) | Auteur |
| available | BOOLEAN | Disponible ou non |
Table load
| Champ | Type SQL | Description |
|---|---|---|
| id | INT (PK) | Identifiant emprunt |
| book_id | INT (FK) | Livre emprunté |
| borrower | VARCHAR(255) | Nom de l’emprunteur |
| loan_date | DATE | Date d’emprunt |
Modèle métier
Créer les classes pour représenter le domaine métier
Créer la couche DAO
Vous créerez les interfaces puis les implémentations pour les livres et les réservations
Les actions suivantes sont demandées pour les livres
- créer un livre
- récupérer un livre par son id
- lister tous les livres
- mettre à jour un livre existant
Les actions suivantes sont demandées pour une réservation
- créer une réservation
- trouver toutes les réservations d’un client
Logique métier
Créer une classe LibraryService qui permet :
- emprunter un livre :
- vérifier que le livre est disponible
- créer un emprunt
- passer le livre en indisponible
Questions
- Que se passe-t-il si deux utilisateurs empruntent le même livre en même temps ?
- vous pouvez développer une version simple qui ne gère pas les race conditions
- puis une seconde méthode les prend en compte
3. Aller plus loin
- Gérer la pagination sur la méthode
findAll()