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 :

QxOrm 1.4.1 BETA : Test Mode


Sujet :

QxOrm

  1. #1
    Expert confirmé
    QxOrm 1.4.1 BETA : Test Mode
    Bonjour à tous,

    Vous pouvez télécharger la version courante de QxOrm 1.4.1 ici (version BETA) : http://www.qxorm.com/version/QxOrm_1....1_BETA_96.zip
    Cette version BETA devrait être très proche de la version finale 1.4.1 : pas de nouvelle fonctionnalité, juste des corrections de bogues ou régressions que nous pourrions trouver dans cette BETA.
    Merci à tous ceux qui peuvent aider à tester et à valider cette version

    Voici les nouveautés apportées par cette version QxOrm 1.4.1 :

    !!! REMARQUE IMPORTANTE AU SUJET DE CETTE VERSION !!! : il est fortement recommandé de lire le fichier de configuration QxOrm.pri de cette nouvelle version (les options de compilation ont changé par rapport aux versions précédentes).
    A présent, par défaut, la bibliothèque QxOrm est beaucoup plus légère : QxOrm dépend uniquement de QtCore et QtSql (la dépendance à boost serialization est maintenant optionnelle et non requise par défaut).
    A présent, le moteur de sérialisation par défaut est basé sur la classe QDataStream de Qt (mais il est toujours possible d'activer boost serialization en définissant l'option de compilation _QX_ENABLE_BOOST_SERIALIZATION dans le fichier de configuration QxOrm.pri).
    Avec les options par défaut :
    • QxOrm 1.4.1 est beaucoup plus simple à installer car il n'est pas nécessaire de lier la dépendance externe boost serialization (uniquement les binaires Qt) ;
    • Le binaire de QxOrm 1.4.1 est 3 fois plus léger comparé à la version précédente 1.3.2 ;
    • Les binaires qui dépendent de QxOrm sont 25% plus petits ;
    • Si dans vos projets actuels basés sur QxOrm, vous n'utilisez pas les fonctions de sérialisation, alors vous pouvez définir ou non l'option de compilation _QX_ENABLE_BOOST_SERIALIZATION sans changer une seule ligne de code.


    Voici tous les autres changements de la version QxOrm 1.4.1 :
    • Amélioration du moteur de relations : possibilité de sélectionner les colonnes à récupérer en utilisant la syntaxe suivante : my_relation { col_1, col_2, etc... } ;
    • Optimisation du module QxTraits pour réduire les temps de compilation et la taille des binaires générés ;
    • Nouvelle option de compilation _QX_ENABLE_BOOST_SERIALIZATION pour activer la dépendance à boost serialization (lire le fichier de configuration QxOrm.pri pour plus de détails) ;
    • Nouvelle option de compilation _QX_ENABLE_QT_NETWORK pour activer le module QxService (transfert de la couche persistante sur le réseau) : lire le fichier de configuration QxOrm.pri pour plus de détails ;
    • Support du moteur de sérialisation de Qt basé sur la classe QDataStream (utilisé par défaut si l'option de compilation _QX_ENABLE_BOOST_SERIALIZATION n'est pas définie) ;
    • Amélioration de la classe qx_query (requêtes SQL) : nouvelle méthode (nommée customOperator()) qui donne la possibilité d'utiliser un opérateur personnalisé (par exemple l'opérateur <@ pour le type ltree de PostgreSQL) ;
    • Corrige un problème au chargement d'un programme à cause des initialisations statiques des singletons (static initialization order fiasco) ;
    • Nouvel espace de nom qx::dao::throwable avec les mêmes fonctions que dans le namespace qx::dao : les fonctions déclenchent une exception de type qx::dao::sql_error au lieu de retourner une instance de type QSqlError ;
    • Ajout de la macro qAssertMsg() pour donner une description plus précise au déclenchement d'une assertion ;
    • Ajout de tous les fichiers *.inl (implémentation des templates) dans le fichier projet QxOrm.pro : QtCreator peut à présent indexer ces fichiers *.inl dans son arborescence ;
    • Les classes préfixées par QxStringCvt ont été renommées en QxConvert : si vous persistez des types personnalisés, il faut penser à renommer QxStringCvt_FromVariant, QxStringCvt_ToVariant en QxConvert_FromVariant, QxConvert_ToVariant.


    A propos de cette nouvelle fonctionnalité : amélioration du moteur de relations : possibilité de sélectionner les colonnes à récupérer en utilisant la syntaxe suivante : my_relation { col_1, col_2, etc... }.
    Il y a un exemple dans le projet de test qxBlog montrant comment sélectionner les colonnes associées aux relations :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // Fetch relations defining columns to fetch with syntax { col_1, col_2, etc... }
    list_blog lstBlogComplexRelation;
    daoError = qx::dao::fetch_all_with_relation(QStringList() << "{ blog_text }" << "author_id { name, birthdate }" << "list_comment { comment_text } -> blog_id -> *", lstBlogComplexRelation);
    qx::dump(lstBlogComplexRelation);
    qAssert(lstBlogComplexRelation.size() > 0);
    qAssert(lstBlogComplexRelation[0]->m_text != ""); // Fetched
    qAssert(lstBlogComplexRelation[0]->m_dt_creation.isNull()); // Not fetched
    qAssert(lstBlogComplexRelation[0]->m_author->m_sex == author::unknown); // Not fetched
    qAssert(lstBlogComplexRelation[0]->m_author->m_name != ""); // Fetched
    qAssert(lstBlogComplexRelation[0]->m_commentX.size() > 0);
    qAssert(lstBlogComplexRelation[0]->m_commentX[0]->m_dt_create.isNull()); // Not fetched
    qAssert(lstBlogComplexRelation[0]->m_commentX[0]->m_text != ""); // Fetched
    qAssert(lstBlogComplexRelation[0]->m_commentX[0]->m_blog);


    Merci !
    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.

  2. #2
    Expert confirmé
    EDIT : nouvelle version BETA disponible à cette adresse : http://www.qxorm.com/version/QxOrm_1....1_BETA_96.zip

    Voici les nouveautés de cette version BETA comparé à la BETA 75 :
    • Vérifie le paramétrage de boost dans le fichier de configuration QxOrm.pri : si paramétrage incorrect, affichage d'un message d'erreur explicite à l'appel de qmake (avant de générer les make files) ;
    • Nouvelle option de compilation _QX_NO_RTTI permettant de compiler QxOrm et les projets dépendants sans les informations de types C++ RTTI ;
    • Amélioration de la syntaxe my_relation { col_1, col_2, etc... } pour sélectionner les colonnes des relations lors d'un fetch ;
    • Nouvel alias qx_shared_ptr : égal à std::shared_ptr si option de compilation _QX_CPP11_SMART_PTR définie, sinon égal à boost::shared_ptr (qx_shared_ptr est à présent utilisé en interne par la bibliothèque QxOrm à la place de boost::shared_ptr).
    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.