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

NHibernate Discussion :

[C#][NHibernate] Générateur de classes


Sujet :

NHibernate

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 38
    Points : 29
    Points
    29
    Par défaut [C#][NHibernate] Générateur de classes
    Salut,

    Je me lance dans NHibernate, et créer chqaue classe à la main me paraît fastidieux... Je suppose donc que des gens beaucoup plus intelligent que moi ont déjà du faire des petits outils magiques qui font ça tout seul...
    Je sais que ça éxiste pour le Java...

    Avez-vous des noms pour ce genre d'outil (je n'ai pas été convaincu par mes recherches google...)

    Merci davance

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Je me lance dans NHibernate, et créer chqaue classe à la main me paraît fastidieux... Je suppose donc que des gens beaucoup plus intelligent que moi ont déjà du faire des petits outils magiques qui font ça tout seul...
    Je sais que ça éxiste pour le Java...
    Modélisez votre base correctement puis Hibernate vous générera automatiquement les classes correspondantes.
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 38
    Points : 29
    Points
    29
    Par défaut
    Ma base de donnée est correctement modélisée. Par contre je ne vois toujours pas comment générer les classes automatiquement. Tous les tutos que j'ai pu lire pour découvrir NHibernate m'ont fait construire chacune des classes à la main.
    Pouvez-vous m'éclaircir sur ce point?

    Merci

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Mygeneration, le mapper nhibernate Lujan. Il est très bien fait !

    En payant, il y a LLBL Gen Pro qui est très bien.
    Moi j'utilise une version customisée du premier.

    Dommage de partir d'une base; fait attention aux associations récursives

  5. #5
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Dommage de partir d'une base;
    Question de point de vue
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Oui et non,

    Partir d'une base et générer du code, c'est le meilleur moyen de faire des erreurs.

    Modéliser le domaine, puis adapter sa persistence avec justement des implémentations SQL propres c'est plus long, mais dans le temps, c'est beaucoup plus fiable.

    Et ça permet de prendre en considération les perfs dès le démarrage, de cache, de vues aussi.

    Sachant qu'en outre la génération de code est rarement intelligente (au sens où elle ne fait pas de sélection fonctionnelle dans les relations ou dans les mappings); que le design de Db parfait n'existe pas, le temps gagné à générer du code est souvent gaspillé à se battre avec des pb de perfs et de chargement, qui finissent après par de la plomberie à n'en plus finir.

    Un bon mapping dans mes critéres, c'est un mapping qui n'a jamais recours à du lazy loading, et où les relations matérialisées sont des graphes fonctionnellement identifiés.

    Nombre des détracteurs de NHibernate ou d'Hibernate sont simplement des gens qui n'ont jamais compris que ce n'est pas parce qu'on génére des mappings automatiquement qu'ils sont justes et exploitable.
    En outre, partir du domaine et travailler le mapping permet aussi de se familiariser avec certains concepts de Nhibernate (mutable, hèritage, projection, event, relations) qui sont souvent mal employés et posent pb.

  7. #7
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Partir d'une base et générer du code, c'est le meilleur moyen de faire des erreurs.
    Ok et partir du code pour générer une base c'est le meilleur moyen de faire des erreurs une base de merd...

    Débat inutile manifestement nous ne sommes pas daccord du tout... vous vous placez côté dev moi côté dba...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  8. #8
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Venant du dev.net à la base mon constat est vite fait... et beaucoups de mes developpeurs en reviennent...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Citation Envoyé par iberserk Voir le message
    Ok et partir du code pour générer une base c'est le meilleur moyen de faire des erreurs une base de merd...

    Débat inutile manifestement nous ne sommes pas daccord du tout... vous vous placez côté dev moi côté dba...
    Ah non, moi je ne suis pas partisan du "tout orm". Je dis juste que dans la réalité des pratiques; ceux qui partent d'une base et mappent n'y arrivent jamais. Ceux qui font un domaine et se posent les bonnes questions sur la base y arrivent.
    Il y a ceux qui utilisent l'ORM pour masquer des éléments qu'ils ne comprennent pas et ceux qui l'utilisent en connaissance de cause.
    Acquérir cette connaissance, c'est plus simple sans générateur de code.
    SQL Pro n'a pas une connaissance étendue des ORM donc son avis bien que très crédible est aussi biaisé. Si je ne connais que le Java et pas le SQL, mon tropisme serait de dire, vive l'épaisseur en Java.

    Le terroriste c'est celui qui manipule des technos qu'il ne maitrise pas. Pas le fait d'en choisir une plus qu'une autre.

    Typiquement, implémenter des vues, mapper des procs stocks...


  10. #10
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    ux qui partent d'une base et mappent n'y arrivent jamais
    La question est pourquoi?
    Je ne remets pas en cause votre savoir faire sur de l'ORM etc et je félicite votre société si elle vous confit la mise en place de l'architecture, mapping etc...

    Mais vous parlez de "réalité des pratiques" et bien là je rejoins SQL PRO: ce travail est rarement (ou trop rarement) confié à des gens compétent...

    A vous de votre côté de ne pas généraliser les bienfaits de l'approche tout 'domaine' comme vous dites...
    Peut être la maitrisez vous (manifestement...) mais combien de développeur à qui on va confier ces taches ne partiront pas dans les travers du lazy loading (par exemple) etc...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Citation Envoyé par iberserk Voir le message
    A vous de votre côté de ne pas généraliser les bienfaits de l'approche tout 'domaine' comme vous dites...
    Peut être la maitrisez vous (manifestement...) mais combien de développeur à qui on va confier ces taches ne partiront pas dans les travers du lazy loading (par exemple) etc...
    On ne se comprend pas. Je ne dis pas de faire le tout modèle, je dis :
    - Partons d'une conception objet, avec des compétences appropriées
    - Mappons la conception objet à une persistence, en vérifiant avec les DBA que la conversion objet / relationnelle est cohérente
    • Utilisation des vues et contraintes
    • Utilisation des procs stocks si nécessaire
    • Indexation; clefs; ordres; check; types

    - Généraliser le bridge Relationnel / Objet
    • Types propriétaires
    • Gestion des Id
    • Gestion du versioning

    - Utilisons le mapping et ses possibilités pour faire la liaison
    - Utilisons les frameworks de tests pour toujours monitorer
    • La clareté et l'efficience des requêtes SQL
    • La taille des graphs d'objets
    • La performance générale

    - Créer une DAL propre
    • Utiliser des requêtes pré-paramétrées validées tant que possible
    • Utiliser des value object quand nécessaire
    • Utiliser des sessions sans état pour les lectures
    • Utiliser du plain SQL ciblé si nécessaire.


    Pour moi c'est un travail long et commun. On ne doit pas utiliser un ORM sans avoir de sérieuses bases ou ressources DB locales.

  12. #12
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    On ne se comprend pas
    Cette fois ci c'est le cas et nous sommes daccord
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 262
    Points : 95
    Points
    95
    Par défaut
    tu peux utilisé AndroMda
    (http://www.andromda.org/docs/andromd...net/index.html).
    Il suffira de modéliser via de l'uml ton modèle objets, et il te genera le reste.

Discussions similaires

  1. Générateur de classes
    Par ben01n dans le forum Langage
    Réponses: 2
    Dernier message: 20/11/2014, 10h42
  2. Réponses: 0
    Dernier message: 24/01/2011, 23h59
  3. Un générateur de classe php / MSSQL
    Par zemeckis dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 06/05/2009, 13h07
  4. [nhibernate] mapper une classe à plusieurs tables
    Par maa dans le forum NHibernate
    Réponses: 6
    Dernier message: 02/07/2007, 18h06
  5. Générateur de classe
    Par hisy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 16/03/2007, 13h55

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