Voici le diagramme de classe général représentant les classes et leurs attributs. Il faut noter que nous avons utiliser les propriété a la place des attributs afin de définir des règles de lecture et d'écriture directement.
#Diagramme de classe pour la persistance
```plantuml
@startuml
Class User {
}
Class Carte {
- List<Commentaire> commentaires
- Set<User> likes
}
Class Commentaire {
+ Set<User> likes
}
Class Pack {
+ List<Commentaire> commentaires
+ Set<User> likes
}
Class Camp {
}
User --> Pack
User --> Carte
User --> Commentaire
Commentaire *--> Pack
Commentaire *--> Carte
Pack --|> Carte
Camp --|> Carte
hide circle
allowmixing
skinparam classAttributeIconSize 0
skinparam classBackgroundColor #ffffb9
skinparam classBorderColor #800000
skinparam classArrowColor #800000
skinparam classFontColor #black
skinparam classFontName Tahoma
@enduml
```
Les seuls données pouvant être modifié dans le master detail sont les commentaires et les likes des pack et cartes. Ainsi ce sont les seuls que l'on enregistre a chaque modification/ajout/suppression.