Bonjour.

J'ai une question qui est la base du Java, mais je me la pose car je vois les différents codages : lequel utiliser?

Je vais prendre un exemple simple avec un pays, qui contient des villes, elles-mêmes qui contiennent des quartiers
Soit une base de données :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Table Pays :
- champ pays_id
- champ pays_nom
 
Table Ville : 
- champ ville_id
- champ ville_nom
- champ ville_id_paysParent (provenant de A)
 
Table quartier :
- champ quartier_id
- champ quartier_nom
- champ quartier_id_villeParent (provenant de B)
En JAVA, je vois différents codages :

le 1er :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Pays
{
  int pays_id
  String pays_nom
  List<ville> listeVilles
}
class Ville
{
 int ville_id
 String ville_nom
 List<quartier> listeQuartiers
}
class quartier :
{
 int quartier_id
 String quartier_nom
}
Le problème de cette représentation est que lors du chargement des pays depuis la base de données, il faut aller lire les villes, puis les quartiers en cascade pour alimenter la liste de Ville de l'objet pays.
--> En fonction de la structure de la base, on peut donc faire un grand nombre de requête en cascade, sachant que chaque objet va charger son objet "voisin". mais l'avantage est qu'une fois chargé, on a tout.

le 2eme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Pays
{
  int pays_id
  String pays_nom
}
class Ville
{
 int ville_id
 String ville_nom
 Pays paysParent
}
class quartier :
{
 int quartier_id
 String quartier_nom
 Ville villeParent
}
Cette représentation correspond à la base de données. Mais il y a toujours des requêtes en cascade car lors de la recherche des quartiers, on va lire la ville, qui va lire le pays...
idem l'avantage est qu'une fois chargé, on a tout.

la 3eme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Pays
{
  int pays_id
  String pays_nom
}
class Ville
{
 int ville_id
 String ville_nom
 int id_paysParent
}
class quartier :
{
 int quartier_id
 String quartier_nom
 int id_villeParent
}
Cette représentation ne lit rien en cascade car les objets ne contiennent pas d'objet en attribut mais que des "id", mais à charque fois qu'on a besoin d'un objet en relation avec celui sur lequel on travaille, on est obligé de le charger.
Pour moi, cela ressemble moins à de "l'objet".

Quelle est donc la norme en terme de codage?
Et en cas de solution 1 ou 2, comment savoir à quel moment s’arrêter de lire les voisins?

Merci d'avance.
Johann