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

C++ Discussion :

C++, SGBD et hibernate like ?!


Sujet :

C++

  1. #1
    Membre régulier Avatar de MenshaKaine
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Points : 81
    Points
    81
    Par défaut C++, SGBD et hibernate like ?!
    bonsoir je suis un noob en sgbd et je fais plus tot du c++ dans la vie.

    j'ai vu du côté java qu'il existait des solution tel que hibernate pour s'interfacer sur un sgbd en "oubliant" les aspect sql ou relationnel d'après ce que j'ai compris ...

    existe-til pour c++ une bibliothèque équivalente ? ou des solution plus élégante que le lancement de requêtes sql via drivers !?

    merci.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Les frameworks (MFC, wxWidgets, Qt) offrent en général des abstractions ODBC pour s'interfacer avec des bases de données.

  3. #3
    Membre régulier Avatar de MenshaKaine
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Points : 81
    Points
    81
    Par défaut
    ok merci je vais regarder du coter de QT.

    est ce des solutions equivalentes ?
    des collegues ne jure que par hibernate !

  4. #4
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Je suis également intéressé par ce genre de Framework, mais je ne pense pas que ça existe en C++.

    C'est des "annotations" qu'on met lorsque l'on créer une classe persistante afin de mapper les attributs à un tuple d'une table. De cette manière, quand on effectue des modifications sur les attributs, l'API met à jour automatiquement la table en parrallèle, sans qu'on doive explicitement balancer des requêtes SQL. (Bien sûr, il y a un peu de SQL à intégrer aux annotations, du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    @Entity
    @Table(name="PERSONNE")
    @SecondaryTable(name="ADRESSE",
    pkJoinColumns={
    @PrimaryKeyJoinColumn(name="ID_ADRESSE")})
    public class PersonneAdresse implements Serializable {
      @Id
      @GeneratedValue
      private int id;
     
      @Basic(fetch = FetchType.LAZY, optional = false)
      private String prenom;
     
      private String nom;
     
      @Column(name="RUE", table="ADRESSE")
      private String rue;
     
      @Column(name="CODEPOSTAL", table="ADRESSE")
      private String codePostal;
     
      @Column(name="VILLE", table="ADRESSE")
      private String ville;
     
      private static final long serialVersionUID = 1L;
     
      public PersonneAdresse() {
        super();
      }
     
      public int getId() {
        return this.id;
      }
     
      public void setId(int id) {
        this.id = id;
      }
     
      public String getPrenom() {
        return this.prenom;
      }
     
      public void setPrenom(String prenom) {
        this.prenom = prenom;
      }
     
      public String getNom() {
        return this.nom;
      }
     
      public void setNom(String nom) {
        this.nom = nom;
      }
     
      public String getCodePostal() {
        return codePostal;
      }
     
      public void setCodePostal(String codePostal) {
        this.codePostal = codePostal;
      }
     
      public String getRue() {
        return rue;
      }
     
      public void setRue(String rue) {
        this.rue = rue;
      }
     
      public String getVille() {
        return ville;
      }
     
      public void setVille(String ville) {
        this.ville = ville;
      }
     
    }

  5. #5
    Membre régulier Avatar de MenshaKaine
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Points : 81
    Points
    81
    Par défaut
    merci pour l'exemple explicite.

    je comprend mieux pourquoi ils aiment ça. L'utilisation me parait très simple. j'aimerai bien trouver une bibliothèque aussi simple pour le c++.

    d'ailleur pourquoi personne n'a jamais porter un hibernate like vers le c++ !?

  6. #6
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Citation Envoyé par MenshaKaine Voir le message
    d'ailleur pourquoi personne n'a jamais porter un hibernate like vers le c++ !?
    Parce que c'est très très très haut niveau, et difficilement réalisable sans machine virtuelle.

    Le mieux qu'on pourrait faire, c'est d'avoir une API qui proposerait un logiciel qui permettrait de "transformer" son code en C++ pur, et qui rajouterait donc les requêtes SQL là où il faut.

  7. #7
    Membre régulier Avatar de MenshaKaine
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Points : 81
    Points
    81
    Par défaut
    de tout façon a un niveau ou l'autre il faut bien passer par le sql je pense.

    il est vrai que les annotations doivent accessible ou modifiable via les metadatas de java enfin j'imagine.

    en faite dans mon idée je cherchais un bibliothèque, voir même des macros ou je ne sais quoi qui automatisent les requêtes avec simplicité sans alourdir le code.

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par MenshaKaine Voir le message
    d'ailleur pourquoi personne n'a jamais porter un hibernate like vers le c++ !?
    C'est plutôt facile avec la notion de propriété (property), mais le C++ de base en est dépourvu hélas. Par contre, des variantes comme C++ Builder, ou Visual Studio en mode C++/CLI, ont implémenté cette extension.
    C'est un peu comme ça que fonctionnent les data binding en C#, C++/CLI, C++ Builder et Delphi, d'ailleurs.

    Pour info : une propriété est vue/utilisée exactement comme un attribut, sauf qu'elle défini librement soit un accès direct à un attribut, soit un appel de fonction (avec le bon prototype, bien entendu) de façon totalement transparente pour le développeur qui utilise la classe.
    Cela remplace totalement les accesseurs, et permet également de faire des attributs en lecture seule, écriture seule ou les deux là aussi de façon transparente.
    La grande puissance des propriétés, c'est que l'on utilise une "variable" qui semble normale, mais qui peut déclencher n'importe quelle action lors de tout accès en lecture/écriture, et ceci sans aucun appel explicite de fonction/méthode.

  9. #9
    Membre éclairé Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Points : 845
    Points
    845
    Par défaut
    Et si utiliser un hibernate like était une erreur ?

    Quelques facilitées pour gérer un sgbd en C++:
    http://dtemplatelib.sourceforge.net/
    http://sourceforge.net/apps/trac/litesql/
    http://soci.sourceforge.net/
    http://libdbi.sourceforge.net/

    Ma préférence revient à SOCI: c'est simple et élégant. S'intègre très bien avec la SL et boost (tuple...). On garde la main sur le sql, mais un astucieux mécanisme non intrusif permet de manipuler des objets métiers.

  10. #10
    Membre régulier Avatar de MenshaKaine
    Inscrit en
    Juin 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Juin 2009
    Messages : 68
    Points : 81
    Points
    81
    Par défaut
    merci pour ces liens je vais étudier ça de près

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SGBD] Connexion de Eclipse (Hibernate) vers SQL Server
    Par Michel38 dans le forum Hibernate
    Réponses: 4
    Dernier message: 11/03/2012, 17h39
  2. hibernate et le SGBD oracle
    Par zin_rbt dans le forum Décisions SGBD
    Réponses: 0
    Dernier message: 01/03/2010, 00h30
  3. Quel SGBD MS SQL like pour débuter?
    Par abdelhamidem dans le forum Débuter
    Réponses: 3
    Dernier message: 14/03/2008, 16h52
  4. [Hibernate] Requête avec un LIKE %% case insensitive
    Par n@n¤u dans le forum Hibernate
    Réponses: 4
    Dernier message: 21/06/2006, 18h27
  5. Réponses: 6
    Dernier message: 15/06/2006, 11h52

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