IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Problème d'algorithme java


Sujet :

Développement Web en Java

  1. #21
    Membre expérimenté
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 170
    Par défaut
    Bonjour @PhilippeGibault,

    D’après ce qu'elle nous a communiqué comme infos, la table moisDisp est une table qui n'a pas été créée par elle et je pense perso que cette table est déjà mappée et je suppose que son mapping est correct;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    personneCourante = moisdisplay.getIdPers();
    Cela se confirme bien par le code suivant qui nous montre clairement que la clé étrangère existe bel et bien dans cette table.

    Maintenant si tu regarde bien la photo qu'elle a joint à son message , tu constate que dans cette photo il y a deux parties .
    La première montre la table moisdisp dans laquelle on a pour chaque personne tous les mois et un recap des conges (par exemple pour ce mois).

    La deuxième partie de la photo contient un petit tableau avec 4 lignes (car 4 personnes) et dans la ligne le total des congés(par exemple si on prend la colonne congés payés) pour cette personne à l'année ET je pense que c'est sur cette partie qu'elle travaille.

    Son problème est donc algorithmique et non pas architectural(je pense je n'ai pas vu ses classes ni son mapping).

    Donc pour mieux cerner le problème, elle charge les données de la table moisDisp et elle veut fédérer les infos dans une seule ligne pour chaque personne.

    Elle peux comme tu as tres bien dis passer directement par requête et charger les données calculées grâce au fonctions d'agrégation sql .Elle peut aussi créer une vue pour ce travaille est directement passer par un select sur la vue(car les données de la vue ne change pas je pense vu que ce sont des congés etc qui, le mois etant fini ne changeront pas ) comme elle peut créer une vue matérialisée si elle est sous oracle ou encore le faire par alimentation de la table à partir de la vue+ procedure + triggers ETC.....ce qui lui permettra d'avoir des donnée à jour(sait on jamais).

    Maintenant le problème comme l'indique le titre est d'ordre algorithmique et plus exactement un simple test pour pouvoir boucler et calculer ,stocker les bonnes valeurs aux bons endroits.

    Je suis d'accord avec toi concernant le cote BDD.
    Nous lui avons aussi proposé d'utiliser les map pour faciliter son stockage et ses accès à ces données fédérées si elle veut le faire cote java.

    Mais sa question ne concernait que le test qui lui pose problème car ses résultats sont faux ( tuples non traités).

    Voila j’espère ne pas être hors sujet ou bien à cote de la plaque

    Bon courage

  2. #22
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    486
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 486
    Billets dans le blog
    5
    Par défaut
    Sincèrement, connaissant très bien Hibernate (et pas trop mal les BDD), je ne suis vraiment pas d'accord.

    Je pense qu'il y a vraiment un problème de modélisation en BDD et/ou un mauvais mapping Hibernate.

    Effectivement, on a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int personneCourante = 0;
    Or, si on avait une bonne modélisation et un bon mapping Hibernate, on devrait avoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Personne personneCourante;
    On récupèrerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    personneCourante = moisdisplay.getCourantePersonne();
    De fait, on aurait un chargement EAGER (et non pas LAZY comme je l'ai dit précédement).

    Ce mauvais mapping, lié peut-être à une mauvaise modélisation (ayant pour cause une clé étrangère dans le cas présent) fait que l'on a du mal à comprendre le problème, et que l'on a du mal à avoir un code propre, lisible et maintenable.

    Pire, on fait une requête HQL vraiment indigeste.

    Si il y avait une bonne modélisation de la base de données et/ou surtout un bon mapping Hibernate, je suis persuade que le problème serait mieux posé, et surtout qu'on le résoudrait avec seulement une requête HQL.

    On n'aurait pas de boucle FOR/WHILE (Hibernate donnant directement la réponse) et on éviterait un code qui est vraiment une usine à gaz et qui va transformer la personne qui va le maintenir en veritable psychopathe.

  3. #23
    Membre expérimenté
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 170
    Par défaut
    Bonjour,

    Je pense qu'il y a vraiment un problème de modélisation en BDD et/ou un mauvais mapping Hibernate.
    Je suis d'accord sur le fait que le mapping peut ne pas être bon mais nous n'avons pas à "penser" car nous n'avons pas assez de matière pour trancher.

    on éviterait un code qui est vraiment une usine à gaz et qui va transformer la personne qui va le maintenir en veritable psychopathe.
    Tout à fait d'accord mais il faut savoir que c'est le cas d'un très grand nombre d'application(même avec un bon mapping) qui rendent les personnes qui maintiennent nerveux.
    On ne peut malheureusement pas corriger tout le code et refaire les mapping car il y a souvent une forte corrélation entre modules et toucher à un module a souvent des répercussion sur d'autres et génère des régression un peu partout (réalité vs utopie).
    Ce que l'on fait souvent ,c'est relancer de nouveaux devs en parallele aux maintenances (sujet à traiter ailleurs).

    De toutes les facons, la personne concernée n'est plus la car elle a eu la réponse a sa question et s'est éclipsée sans taguer la discussion.

    Merci pour ton analyse pertinente @PhilippeGibault.

    A bientot...

  4. #24
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Par défaut
    Merci infiniment de vos réponses

    une usine à gaz et qui va transformer la personne qui va le maintenir en véritable psychopathe.
    C'est déjà le cas... Quoiqu'il en soit merci de vos réponses qui m'ont donné matière à réfléchir

    Dès que j'aurai trouve le bon algo, je vous en ferai part.

    Quoiqu'il en soit merci pour tout

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Problème algorithme Java
    Par noboxstyle dans le forum Général Java
    Réponses: 5
    Dernier message: 10/05/2016, 19h19
  2. Problème algorithme Java
    Par Alba.1337 dans le forum Général Java
    Réponses: 4
    Dernier message: 21/03/2012, 13h56
  3. [debutant][Applet] problèmes insertion applet java
    Par mlequim dans le forum Applets
    Réponses: 5
    Dernier message: 11/07/2005, 09h50
  4. [SQLPLUS] - Problème de Triggers Java
    Par farcis dans le forum Oracle
    Réponses: 7
    Dernier message: 23/12/2004, 09h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo