-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path02_java_jpa_P_associations.qmd
More file actions
97 lines (74 loc) · 2.51 KB
/
Copy path02_java_jpa_P_associations.qmd
File metadata and controls
97 lines (74 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
---
title: 'TP JPA 02 : Associations avec Jakarta Persistence'
subtitle: Gestion des relations entre entités JPA
description: Apprenez à gérer les associations entre entités en utilisant Jakarta Persistence API (JPA) avec des exemples pratiques en Java.
image: _quarto-utils/MyMedia/images/optimized/taiki-ishikawa-PUXFKuVf_84-unsplash_java-400.webp
categories:
- Exercices
- Java
- JPA
- I211
provide_notes: true
provide_slides: false
jupyter: java
---
{{< include ./_init.qmd >}}
## Créer un nouveau projet Java JPA
Par exemple avec la structure suivante :
```plaintext
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.
```java
@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<>();
}
```
```java
@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:
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
## 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.