+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    3 880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 880
    Points : 11 448
    Points
    11 448

    Par défaut Implémenter le patron de conception DAO par les tests

    Bonjour à tous,

    Je vous propose un TP en Java. Ce TP vous montre comment écrire et tester un DAO en Java. Vous allez découvrir Maven, tracer le fonctionnement avec Log4j, tester vos méthodes avec JUnit, lire des fichiers CSV avec OpenCsv et CsvEngine, gérer des ressources en Java et bien plus encore...

    http://thierry-leriche-dessirier.dev...et-tester-dao/

    Bonne lecture.

    Et comme d'habitude, n'oubliez pas de nous indiquer vos remarques, bonnes ou négatives, à la suite de ce message.

    Th.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche
    Test DISC gratuit : http://www.profil4.com

  2. #2
    Membre confirmé
    Avatar de Khaled.Noordin
    Homme Profil pro
    Inscrit en
    janvier 2005
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 355
    Points : 497
    Points
    497
    Billets dans le blog
    1

    Par défaut

    Salut,
    Je viens de parcourir l'article que j'ai trouvé très intéressant, merci pour ce contenu

  3. #3
    Membre chevronné
    Inscrit en
    mai 2006
    Messages
    1 320
    Détails du profil
    Informations forums :
    Inscription : mai 2006
    Messages : 1 320
    Points : 1 908
    Points
    1 908

    Par défaut

    Pour l'instant, je n'ai lu que l'intro mais ca a l'air tres interessant. Je dirais ce que j'en pense quand j'aurais lu la suite

    Merci pour le tuto en tout cas

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    août 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : août 2009
    Messages : 11
    Points : 18
    Points
    18

    Par défaut Excellent boulot !

    Travail très impressionnant, super détaillé. Bravo !

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : février 2005
    Messages : 2 636
    Points : 5 930
    Points
    5 930

    Par défaut

    Beau travail .

    Juste une petite remarque sur l'enum Sexe, l'attribut code me semble superflu à moins qu'il y ait une raison particulière de ne pas utiliser l'ordinal de l'enum ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public enum Sexe {
     
        FEMALE,
        MALE
    }
    // Sexe.FEMALE.ordinal() -> 0
    // Sexe.MALE.ordinal() -> 1
    // Sexe.values()[0] -> Sexe.FEMALE
    // Sexe.values()[1] -> Sexe.MALE
    Après personnellement je préfère utiliser le nom de l'enum qui rend les fichiers de config plus lisible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String str = sexe.name();
    sexe = Sexe.valueOf(str);
    L'inconvénient est que cela prend un peu plus de place (mais c'est très souvent négligeable).

    Pareil pour l'enum RaceDeChien, pourquoi ajouter un attribut code au lieu d'utiliser le nom de l'enum (methode name()) ?
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  6. #6
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    3 880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 880
    Points : 11 448
    Points
    11 448

    Par défaut

    Bonjour,

    Ce sont des très bonnes remarques.

    Pour l'enum Sexe, j'ai mis un code pour avoir "1" et "2", comme sur le numéro de sécurité social. Ça permet d'avoir quelque chose de plus sympa dans le CSV.

    Pour l'enum Race, j'ai voulu faire comme si le système à l'origine du fichier CSV (ou de la base de données) limitait le nombre de caractères à 8. C'est une contrainte qu'on retrouve encore dans de nombreux programmes.

    En fait, il n'y a aucune raison pour qu'un programme distant utilise les mêmes noms d'enum que mon programme chez moi, et encore moins les mêmes notations.

    Pourquoi je dis ça ? Parce que les fichiers CSV sont surtout utilisés pour transférer de l'information entre deux systèmes distants. Par exemple une boutique animalière à Bordeaux envoie une liste de chiens au format CSV au système central à Paris. En outre, cela permet à des web master tiers (sans lien avec la société) de reprendre les informations facilement, avec un format qui reste lisible.

    Dans un vrai programme, il est assez rare, en effet, de stocker les données dans un fichier CSV. On utilise plutôt des bases de données pour ça.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche
    Test DISC gratuit : http://www.profil4.com

  7. #7
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : février 2005
    Messages : 2 636
    Points : 5 930
    Points
    5 930

    Par défaut

    Citation Envoyé par thierryler Voir le message
    Pour l'enum Sexe, j'ai mis un code pour avoir "1" et "2", comme sur le numéro de sécurité social. Ça permet d'avoir quelque chose de plus sympa dans le CSV.

    Pour l'enum Race, j'ai voulu faire comme si le système à l'origine du fichier CSV (ou de la base de données) limitait le nombre de caractères à 8. C'est une contrainte qu'on retrouve encore dans de nombreux programmes.

    En fait, il n'y a aucune raison pour qu'un programme distant utilise les mêmes noms d'enum que mon programme chez moi, et encore moins les mêmes notations.

    Pourquoi je dis ça ? Parce que les fichiers CSV sont surtout utilisés pour transférer de l'information entre deux systèmes distants. Par exemple une boutique animalière à Bordeaux envoie une liste de chiens au format CSV au système central à Paris. En outre, cela permet à des web master tiers (sans lien avec la société) de reprendre les informations facilement, avec un format qui reste lisible.
    Mais du coup l'enum est liée au-dit système. On peut vouloir utiliser l'enum dans un autre système qui a d'autres contraintes.

    Si on a besoin d'utiliser des IDs particuliers (pour cause de limitation de caractère ou pour qu'un autre système puisse charger les données dans un modèle différent) c'est à la couche de sérialisation de s'en occuper (en utilisant des Map par exemple), pas au modèle .

    Contrairement aux idées reçues ça ne demande pas beaucoup plus de temps à écrire et ce n'est pas plus compliqué. L'avantage est qu'on se retrouve avec un modèle simple beaucoup plus facile à lire et à appréhender. Et la spécificité due à un système est isolée du modèle .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  8. #8
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    octobre 2007
    Messages
    3 880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2007
    Messages : 3 880
    Points : 11 448
    Points
    11 448

    Par défaut

    Effectivement, pris comme ça, tu as raison. Toutefois ça reste un point de détail dans le programme ;-)
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche
    Test DISC gratuit : http://www.profil4.com

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/03/2014, 01h26

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