TP JPA 02 : Associations avec Jakarta Persistence
Gestion des relations entre entités JPA
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.
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;
}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:
Label- OneToOne avec Address
- OneToMany avec Album
Playlist- ManyToOne avec User
- ManyToMany avec Track
Concert- ManyToOne avec Artist
- OneToMany avec Ticket
- ManyToMany avec Genre
Review- ManyToOne avec User
- ManyToOne avec Album
- ElementCollection pour les commentaires
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.