conception-assistant/data/704e7897-8f42-4007-b5e2-5c43a1237a23.md
2025-10-14 17:05:19 +02:00

2.5 KiB

TD/TP 5 - Persistance Objet-Relationnel

Objectif

Implémenter un système de persistance objet-relationnel pour gérer des livres (Book) et leurs éditeurs (Publisher) en utilisant une base de données Derby.

Architecture

Le projet suit le pattern Data Mapper pour séparer la logique métier de la persistance:

  • Classes du domaine: objets métier (Book, Publisher)
  • Classes Mapper: gestion de la persistance (BookMapper, PublisherMapper)
  • Interfaces: contrats pour les objets persistants (DomainObject, Mapper)
  • Utilitaire DB: gestion de la connexion à Derby

Structure du code

classDiagram
    class DomainObject {
        <<interface>>
        +getId() Object
        +setId(Object id) void
    }

    class Mapper~T~ {
        <<interface>>
        +insert(T newObject) Object
        +find(Object oid) T
        +findMany(Object criterion) Set~T~
        +update(T objToUpdate) void
        +delete(T objToDelete) void
        +deleteAll() void
    }

    class Book {
        -String isbn
        -String title
        -String author
        -float price
        +getId() Object
        +setId(Object id) void
        +getIsbn() String
        +getTitle() String
        +getAuthor() String
        +getPrice() float
    }

    class BookMapper {
        -DB db
        +insert(Book newBook) Object
        +find(Object isbn) Book
        +findMany(Object authorName) Set~Book~
        +update(Book bookToUpdate) void
        +delete(Book bookToDelete) void
        +deleteAll() void
    }

    class DB {
        +getConnection() Connection
        +createTable(String sql) void
    }

    DomainObject <|.. Book
    Mapper <|.. BookMapper
    BookMapper --> Book : persiste
    BookMapper --> DB : utilise

Travail à réaliser

Partie 1: Persistance de Book

  1. Compléter Book.getId() et Book.setId() (DomainObject)
  2. Implémenter les méthodes CRUD dans BookMapper
  3. Définir le SQL de création de table dans BookMapper.createTableStmt

Partie 2: Association Book-Publisher

  1. Créer PublisherMapper
  2. Modifier Book pour ajouter un attribut Publisher
  3. Modifier BookMapper pour gérer l'association
  4. Gérer les règles: sauvegarde en cascade, suppression en cascade

Commandes Maven

mvn clean          # Nettoyer les compilations
mvn compile        # Compiler le projet
mvn test           # Exécuter les tests

Base de données

  • Nom: Roux
  • SGBD: Apache Derby 10.16.1.1
  • Port: 1527
  • Driver: jdbc:derby://localhost:1527/Roux