Construction d'objet : Attribut
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:
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:
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:
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:
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