[Java] Problème de conception par rapport à l'utilisation d'une BD

Problème de conception par rapport à l'utilisation d'une BD [Java] - Java - Programmation

Marsh Posté le 27-07-2006 à 21:54:13    

Bonjour à tous,
J'ai un problème de conception au niveau d'un site web que je développe en J2EE. Je pense que c'est un problème bête mais qui ma tracasse pas mal!
Je vais prendre un exemple simple :
Imaginons que je voudrais écrire une appli dans laquelle j'ai des utilisateurs auquels j'associes des messages (emails par exemple).
Page 1 : permet d'afficher uniquement les objets de ces messages pour un utilisateur donné.
Page 2 : Un clic sur un message me permet de consulter tout le message.
 
Je développe une classe permettant l'instanciation de mes utilisateurs et une autre permettant la manipulation de message.
Ces messsages sont stockés dans une BD.
La question que je me pose est la suivante : lorsque j'instancie un utilisateur, si je fais la récupération automatique des messages associés et de tout leur contenu, c'est une perte de temps au niveau traitements lorsque je vais afficher la page 1 : je vais en effet charger tous les messages alors que je n'ai besoin que de leurs objets.
Autre possibilité, j'ai un getMessages() dans la classe utilisateur, que je n'apelle qu'en cas de besoin. Mais à nouveau, je vais renvoyer tout (corps, objet, ect...) pour rien.
Comment optimiser cette récupération d'info en fonction des besoins? Quand dois-je créer mes messages? Dans le contructeur d'un utilisateur? Je pourrais en effet très bien avoir envie de connaitre le nombre de messages qu'à un utilisateur sans les afficher.
 
Autre question, qu'est ce que le pattern Factory? Peut-il m'être utile?


Message édité par toutoune le 27-07-2006 à 22:08:05
Reply

Marsh Posté le 27-07-2006 à 21:54:13   

Reply

Marsh Posté le 28-07-2006 à 01:05:24    

Il faudrait faire au moins 4 colonnes dans la table Message et 4 champs dans une classe Message :
Un pour le nom ou l'identifiant de l'utilisateur (celui qui reçoit le message) qui servira dans la page 1
Une identifiant unique pour le message (par example un numéro de séquence) qui servira dans la page 2
Un pour l'objet du message
Un pour le contenu du message
 
Lorsque tu affiches tout tes messages page 1, tu récupères uniquement la colonne objet et l'identifiant du message pour l'utilisateur souhaité.
Si tu cliques sur la ligne de ton message, tu afficheras le contenu page 2 qui tu récupéreras gràce à son identifiant unique (car plusieurs message peuvent avoir le même objet).
 
Dans ta classe Message, il vaut mieux créer une méthode static qui retourne un tableau de Message avec une méthode getMessages(utilisateur) qui retournera tous les messages d'un utilisateur sauf le contenu puis faire un appel à une autre méthode static getMessage(numéro_message) pour afficher uniquement le message correspondant.
 
Tu peux aussi ajouter le nom de la personne qui envoie le message, la date, les autres personnes en copies ... C'est plus sympa.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed