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

QxOrm Discussion :

Repository


Sujet :

QxOrm

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 151
    Par défaut Repository
    Hello,

    J'ai une question à propos de ce concept de Repository:
    J'ai une table User, comment est-ce que je peux faire pour récuperer par le repository, la liste des noms de mes utilisateurs ? Est-ce possible ?

    J'ai vu qu'il y avait un _fetchByQuery, mais dans ce cas, qu'est ce que je lui passe comme instance ?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 482
    Par défaut


    J'ai une table User, comment est-ce que je peux faire pour récuperer par le repository, la liste des noms de mes utilisateurs ?
    Oui tu peux utiliser la notion de repository pour communiquer avec la base de données.
    Ce concept permet d'avoir une interface commune pour toutes tes classes persistantes.
    L'interface qx::IxRepository possède les mêmes fonctions que le namespace qx::dao::... .

    Pour utiliser le concept de repository avec ta classe User, il faut que celle-ci hérite de QObject.
    Ensuite, il faut que ton repository associé à la classe User soit enregistré dans le contexte QxOrm, tu peux le faire de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    namespace qx {
    template <> void register_class(QxClass<User> & t)
    {
       register_repository<User>("User");
       // etc...
    Ensuite, si tu veux récupérer tous les utilisateurs de ta table, tu peux écrire quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    qx::QxCollection<long, User_ptr> lstUsers;
    qx::IxRepository * pRepository = qx::QxRepositoryX::get("User");
    QSqlError daoError = pRepository->_fetchAll(& lstUsers);
    _foreach(User_ptr p, lstUsers)
    { /* etc... */ }
    La notion de repository a besoin d'une classe de base pour fonctionner :
    * pour un objet simple, il faut hériter de QObject ;
    * pour une collection d'objets, il faut utiliser qx::IxCollection.

    Un autre exemple avec une query pour récupérer les utilisateurs ayant comme nom de famille "DUPONT" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    qx::QxCollection<long, User_ptr> lstUsers;
    qx::IxRepository * pRepository = qx::QxRepositoryX::get("User");
    qx_query query; query.where("User.name").like("DUPONT");
    QSqlError daoError = pRepository->_fetchByQuery(query, & lstUsers);
    _foreach(User_ptr p, lstUsers)
    { /* etc... */ }
    Remarque : la notion de repository a été créée pour répondre à un besoin bien particulier, tu trouveras plus d'infos ici : http://www.developpez.net/forums/d11...introspection/
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 151
    Par défaut
    Merci de ta réponse, ça va m'aider

    Hélas, mon cas est un peu compliqué: dans cette partie du code, je ne peux pas utiliser directement la classe User, j'ai le nom de la table, le nom du champ que je veux lister et un objet qui me permet d'instancier ce dont j'ai besoin et qui, lui, peut utiliser User...

    Je pense que je vais devoir passer par mon objet Instancier pour faire mes opérations.

    C'est un peu difficile de rendre générique ces problématiques de BDD... J'essaie tant bien que mal, mais c'est complexe.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    482
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 482
    Par défaut
    dans cette partie du code, je ne peux pas utiliser directement la classe User
    Les repository ne t'obligent pas à utiliser directement la classe User.
    Ta classe User dérive de QObject si tu veux utiliser les repository, donc tu peux passer en paramètre un QObject * aux différentes méthodes de l'interface qx::IxRepository.
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

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

Discussions similaires

  1. [EMSRV] Peut-on se connecter a un repository EMSRV ?
    Par goony dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 08/03/2006, 12h22
  2. Réponses: 1
    Dernier message: 13/02/2006, 03h13
  3. Gestion de repository avec Subversion
    Par GLDavid dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 24/01/2006, 10h13
  4. [DeveloperSuite10g] Pb installation Repository
    Par heffer69 dans le forum Designer
    Réponses: 3
    Dernier message: 01/07/2005, 18h35
  5. [repository] [plug in]
    Par scape dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 24/08/2004, 14h05

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