Ressource

1. Télécharger et lancer le projet

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

pattron dao oracle

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

ChampType SQLDescription
idINT (PK)Identifiant du livre
titleVARCHAR(255)Titre
authorVARCHAR(255)Auteur
availableBOOLEANDisponible ou non

Table load

ChampType SQLDescription
idINT (PK)Identifiant emprunt
book_idINT (FK)Livre emprunté
borrowerVARCHAR(255)Nom de l’emprunteur
loan_dateDATEDate 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()