Developpez.com - Rubrique Java

Le Club des Développeurs et IT Pro

Implémenter le patron de conception DAO en Java par les tests unitaires,

Par Thierry Leriche-Dessirier

Le 2012-12-14 18:14:27, par thierryler, Rédacteur
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.
  Discussion forum
7 commentaires
  • Khaled.Noordin
    Membre confirmé
    Salut,
    Je viens de parcourir l'article que j'ai trouvé très intéressant, merci pour ce contenu
  • dadoonet95
    Membre du Club
    Travail très impressionnant, super détaillé. Bravo !
  • le y@m's
    Expert confirmé
    Envoyé par thierryler
    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 .
  • hwoarang
    Membre chevronné
    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
  • le y@m's
    Expert confirmé
    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 :
    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 :
    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()) ?
  • thierryler
    Rédacteur
    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.
  • thierryler
    Rédacteur
    Effectivement, pris comme ça, tu as raison. Toutefois ça reste un point de détail dans le programme ;-)