La bibliothèque QxOrm dépend à présent uniquement de Qt (modules QtCore et QtSql par défaut).
Pour assurer une compatibilité avec les projets existants, la bibliothèque QxOrm supporte toujours des classes de boost (pointeurs intelligents, collections, boost::optional, etc.) : il est nécessaire de définir l'option de compilation _QX_ENABLE_BOOST pour activer ces fonctionnalités.
Les principaux avantages de cette refonte :
- la bibliothèque QxOrm est beaucoup plus légère ;
- plus simple à installer (vous n'avez plus à gérer l'installation de boost) ;
- réduction des temps de compilation ;
- réduction de la taille des exécutables générés.
Merci également à Jimmy Taker pour de nombreuses améliorations et nouvelles fonctionnalités sur le module QxModelView !
Modifications apportées à la bibliothèque QxOrm 1.4.4 :
- un compilateur C++11 est nécessaire à présent pour utiliser QxOrm (un support complet de C++11 n'est pas forcément nécessaire : par exemple, QxOrm peut être compilé avec MSVC 2012, GCC 4.5 ou Clang 3.2) ;
- le pattern PIMPL (private implementation) est à présent utilisé par certaines classes de QxOrm pour réduire les temps de compilation et la taille des exécutables générés ;
- nouvelle classe nommée qx::any pour remplacer boost::any (implémentation basique de boost::any écrit par Kevlin Henney) ;
- l'alias qx_shared_ptr n'existe plus et est remplacé par : std::shared_ptr ;
- module QxModelView : tous les modèles basés sur l'interface qx::IxModel peuvent être triés (sur n'importe quelle colonne), il est également possible d'utiliser la classe QSortFilterProxyModel de Qt pour trier le modèle ;
- module QxModelView - qx::QxModel<T> : corrige la méthode setData() avec l'option e_auto_update_on_field_change lorsqu'une erreur se produit lors d'un enregistrement en base de données (la valeur précédente est restaurée en cas d'erreur) ;
- module QxModelView - qx::IxModel : corrige la méthode setHeaderData() en utilisant le rôle par défaut (Qt::EditRole) ;
- module QxModelView - qx::IxModel : si une description est enregistrée dans le contexte QxOrm, alors elle est affichée en en-tête de colonne ;
- module QxModelView : nouvelle fonctionnalité disponible pour ajouter automatiquement une ligne vide à la fin d'un tableau pour insérer rapidement de nouveaux éléments (méthode setShowEmptyLine()) ;
- module QxModelView : possibilité de définir une classe de base intermédiaire entre l'interface qx::IxModel et la classe qx::QxModel<T> pour fournir vos propres fonctionnalités à vos modèles, par exemple un modèle de type drag&drop dans une classe nommée IxModelDragDrop : qx::IxModel * pModel = new qx::QxModel<MyPersistantClass, IxModelDragDrop>() ;
- QxOrm.pro : correction du paramètre DESTDIR sous Windows ;
- QxOrm.pri et QxOrm.cmake : ajout d'une section pour définir l'option de compilation QT_USE_QSTRINGBUILDER (pour optimiser les opérations sur la classe QString) ;
- la bibliothèque QxOrm est à présent testée également avec le compilateur MSVC 2015 ;
- correction d'un bogue dans le fichier QxSqlError.h (appel à qPrintable() avec un objet temporaire) ;
- fournit plus de détails dans les logs après l'exécution d'une requête SQL : temps pour exécuter la requête en base de données + temps pour alimenter les instances C++ ;
- support de la classe std::optional<T> (si votre compilateur supporte C++17) pour gérer la valeur NULL des bases de données : nouvel en-tête disponible nommé <QxExtras/QxStdOptional.h> à inclure juste après <QxOrm.h> (idéalement dans un en-tête précompilé).
Modifications apportées à l'application QxEntityEditor 1.2.2 :
- correction d'un bogue après un import (d'un schéma de base de données ou d'un fichier JSON) qui forçait l'utilisateur à rafraichir le projet ;
- amélioration des performances (récupération de moins de données) en chargeant les relations sur les classes persistantes générées (paramètre bLoadFromDatabase) ;
- modification du plugin d'export model/view pour prendre en compte les améliorations de la nouvelle version de QxOrm ;
- suppression de la dépendance à boost par défaut et activation des fonctionnalités C++11 ;
- amélioration du moteur JavaScript pour personnaliser les exports : ajout de trois fonctions disponibles en script js pour récupérer tout le paramétrage défini dans QxEntityEditor (au niveau global, niveau projet et niveau plugin) ;
- vérifie le schéma des entités avant un export C++ : si une erreur de design est détectée, alors un message apparait à l'utilisateur ;
- correction du champ type SQL dans les paramètres avancés d'une propriété : possibilité de définir des parenthèses (par exemple VARCHAR(255) est à présent accepté) ;
- export du schéma de base de données DDL pour MySQL (et MariaDB) : ajout du caractère ` sur les noms de colonnes et tables de la base de données ;
- ajout du chemin d'accès aux projets QxEntityEditor dans la liste des projets récemment ouverts ;
- à présent, il est plus simple d'accéder aux paramètres d'une relation (simple clic sur le diagramme d'entités).
Vous pouvez télécharger ces nouvelles versions sur le site internet de QxOrm et QxEntityEditor.
Source : QxOrm
Et vous ?
Que pensez-vous de ces nouvelles versions ?