TP JPA 02 : Associations avec Jakarta Persistence

Exercices
Java
JPA
I211
Création d’associations entre entités JPA
Auteur
Affiliations

Université de Toulon

LIS UMR CNRS 7020

Date de publication

2025-01-21

1 Créer un nouveau projet Java JPA

Par exemple avec la structure suivante :

src/
├── main/java/fr/univtln/.../tpjpa02/
│   ├── entities/
│   ├── repositories/
│   └── utils/
└── test/java/fr/univitln/.../tpjpa02/

Le répertoire entities contiendra les entités JPA, repositories les classes de gestion des entités et utils les classes utilitaires. Vous pourrez utilise H2 comme au TP précédent pour simplifier la configuration.

2 Partie 1 - Entités de base

Créer les entités suivantes avec leurs associations et tester les opérations CRUD. Vous ajouterez les classes nécessaires.

@Entity @Getter @Setter
public class Artist {
    @Id @GeneratedValue
    private Long id;
    private String name;
    
    @OneToMany(mappedBy = "artist", cascade = CascadeType.ALL)
    private Set<Album> albums = new HashSet<>();
}
@Entity @Getter @Setter
public class Album {
    @Id @GeneratedValue
    private Long id;
    private String title;
    private LocalDate releaseDate;
    
    @ManyToOne
    private Artist artist;
}

3 Partie 2 - Associations complexes

Compléter votre programme avec d’autres entités et des associations plus complexes. Créer les entités suivantes avec leurs associations:

  1. Label
    • OneToOne avec Address
    • OneToMany avec Album
  2. Playlist
    • ManyToOne avec User
    • ManyToMany avec Track
  3. Concert
    • ManyToOne avec Artist
    • OneToMany avec Ticket
    • ManyToMany avec Genre
  4. Review
    • ManyToOne avec User
    • ManyToOne avec Album
    • ElementCollection pour les commentaires

4 Partie 3 - Génération de données (1h)

Utiliser Java Faker pour générer des données de test réalistes. https://github.com/DiUS/java-faker

  • http://dius.github.io/java-faker/apidocs/com/github/javafaker/Artist.html
  • http://dius.github.io/java-faker/apidocs/com/github/javafaker/Music.html

Vous pouvez aussi utiliser un LLM (Language Level Model) pour générer des fichiers CSV de données et écrire des script d’importation.

Réutilisation