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

avec Java Discussion :

Question Classe JAVA / BDD


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut Question Classe JAVA / BDD
    Bonjour à tous,

    J'ai une question concernant l'instance d'un objet à partir d'une BDD. Dans mes classes j'ai l'habitude d'avoir en attribut de l'objet un ID, je fais souvent deux constructeur un quand j'insére mo objet en base de donnée qui ne comporte pas d'Id quand celui-ci est auto-généré et un autre avec l'id quand je récupére de la base ou là quand j'instancie l'objet j'utilise l'ID stocké en bdd comme j'ai appris en cours, ex:

    Voiture v = new Voiture(idVoiture, marque, immatriculation);

    Quand j'ai parlé de ca à des collégues on m'a dit ca va pas , c'est dégueulasse , on fait jamais ca bref ... et j'ai demandé pourquoi sans qui sache m'expliquer le pourquoi du comment donc j'aimerai savoir si c'est correct ou non de faire comme ca car que je veux bien me remettre en question sur une facon de faire mais qu'on me le dise sans pouvoir argumenter derrière non.

    Donc si quelqu'un pourrait me renseigner cela serait super sympa afin que je puisse savoir si ma facon de faire est "degueulasse" comme il dise...Merci d'avance.

    Cordialement

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Moui bof.

    Moi ce qui me dérange c'est plutôt que ton constructeur ait des paramètres alors qu'il représente un objet de données mutables et persistantes. Ça veut dire que du coup tu ne peux pas l'instancier sans avoir d'abord pris la peine de récupérer tous les paramètres dans des variables pour bien savoir qu'est-ce qui va où, puis ensuite seulement tu appelles le constructeur avec ces paramètres.

    Alors que tu pourrais faire un constructeur sans paramètre, puis renseigner ensuite chaque valeur avec un setter. C'est plus pratique et de toute façon dès que tu utiliseras un vrai DAO comme Hibernate, c'est à peine si tu auras le choix.

    Mais faire du foin à propos d'avoir deux constructeurs différents en fonction de si on connaît ou pas l'id, bof bof.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Alors dans l'absolu, le constructeur que tu viens de présenter ne me choque pas. Il est vrai qu'il existe certaines pratiques suivant les frameworks utilisés, mais là il faudrait plus de détails. Donc:

    ça n'a rien de dégueulasse de créer plusieurs constructeurs avec des paramètres différents.
    c'est même assez propre d'avoir pour chaque classe un constructeur prenant tous les paramètres et un constructeur avec tous les paramètres moins l'id. Ca dénote une certaine consistance dans le code.


    Après, à lire ton message, tu sous entends que ce serait le constructeur lui même qui stockerait dans la DB. Là par contre, si c'est le cas, ce n'est pas propre. Le constructeur, son rôle se limite à constuire l'objet. Ce qui est le stockage devrait être le travail d'une classe spécialisée.

    Dernières choses:
    Vérifie que la boite pour laquelle tu travaille n'a pas des règles établies à suivre (dans l'absolu, aussi absurbe que certaines peuvent être, ça permet quand même de garder une cohérence dans le code et c'est important)
    Souvent, les objets de type data on aussi un constructeur vide, ce qui facilite des opérations de sérialisation ou d'initialisation.
    Si tu appelle tes constructeurs la plupart du temps avec beaucoup de null en paramètre, il faut peut être penser à créer des constructeurs plus spécialisés
    Enfin, avoir un constructeur avec de nombreux paramètres rend vite le code d'appel illisible et on se demande si la String du kamoulox faut la mettre à la 6ème ou la 7ème position.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    Ok merci ca me rassure tchize aprés concernant ta remarque c'est moi qui me suis mal exprimé, j'utilise bien des classes spécialisées par la suite.

    Thelvin avec hibernate j'utilise un constructeur sans paramétres mais par exemple quand je n'utilise pas de framework et que je fais un DAO "classique" par contre là je mets des paramètres et j'instancie mon objet en passant en paramètres les données que j'ai récupéré en BDD après c'est peut etre pas tout à fait correct meme si cela ne m'a jamais posé problème après je débute dans le métier et j'applique ce qu'on m'a appris en cours donc il y'a surement des pratiques que j'ai appris qui ne sont pas correct, c'est pour cela que je demande afin de rectifier la chose mais avant de changer ma facon de faire je me renseigne surtout quand une personne te dit c'est pas comme ca qu'on fait sans aucune argumentation derrière.

    merci à vous.

    Bonne journée

Discussions similaires

  1. ajouter une variable d'un classe java à une bdd
    Par cisco.nat dans le forum Général Java
    Réponses: 13
    Dernier message: 07/06/2013, 16h55
  2. Plan étape des classes java vers BDD
    Par Sokhar dans le forum Hibernate
    Réponses: 2
    Dernier message: 30/05/2008, 12h29
  3. Sauvegarder une instance d'une classe Java dans une BDD MySQL
    Par malag dans le forum Administration
    Réponses: 1
    Dernier message: 03/09/2006, 19h23
  4. classes java [débutant]
    Par glurps dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 06/06/2003, 15h57
  5. Inserer des classes java existantes
    Par 2000 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 20/03/2003, 12h35

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