Sortie de QxOrm 1.4.3 et QxEntityEditor 1.2.1 : l'ORM pour Qt maintenant compilable avec CMake
Les fichiers générés aussi

Le , par QxOrm, Membre expert
Bonjour à tous,

La bibliothèque QxOrm 1.4.3 et l'application QxEntityEditor 1.2.1 viennent de sortir, avec notamment le support de CMake et une nouvelle documentation pour l'application QxEntityEditor.

Modifications apportées à la bibliothèque QxOrm 1.4.3 :
  • Support de CMake : nouveau fichier CMakeLists.txt ajouté au package de la bibliothèque QxOrm ;
  • Amélioration des messages d'erreur affichés lorsque la base de données retourne une erreur (fonctions de l'espace de nom qx::dao) ;
  • Nouveau paramètre dans la classe de paramétrage qx::QxSqlDatabase pour tracer les valeurs injectées à la requête SQL (fonction setTraceSqlBoundValues) : par défaut, ces valeurs sont tracées uniquement lorsqu'une erreur se produit ;
  • Nouvelle syntaxe disponible pour indiquer les colonnes à ne pas récupérer lors d'une requête SQL : -{ col_1, col_2, etc... } ;
  • Nouvelle fonction qx::dao::call_query_without_prepare() pour exécuter des requêtes spécifiques aux bases de données ;
  • Amélioration du module QxModelView : tous les modèles QxOrm (basés sur l'interface qx::IxModel) peuvent être sérialisés au format JSON (en incluant tous les niveaux de relations) : cette fonctionnalité donne une nouvelle possibilité pour travailler avec les relations dans un environnement QML (grâce aux fonctions Javascript JSON.parse() et JSON.stringify()) sans utiliser le concept de modèles imbriqués (donc sans utiliser les classes modèles/vues générées par l'application QxEntityEditor) ;
  • Amélioration du projet d'exemple qxBlogModelView pour montrer différentes façons d'accéder au relations en QML (modèles imbriqués ou JSON) ;
  • Correction d'une fuite mémoire dans la classe qx::QxSqlRelation ;
  • Réduction de la taille des exécutables générés (environ 20%) et des temps de compilation (environ 20%) pour construire les classes persistantes enregistrées dans le contexte QxOrm ;
  • Support du concept compilation unitaire pour réduire les temps de compilation de la bibliothèque QxOrm et des classes persistantes générées par QxEntityEditor : pour plus de détails, voir l'option de compilation _QX_UNITY_BUILD dans les fichiers de configuration QxOrm.pri ou QxOrm.cmake ;
  • Amélioration du module QxConvert : possibilité d'enregistrer en base de données des propriétés de type QVariant qui contiennent des objets complexes de type QVariantMap, QVariantHash ou QVariantList (enregistrement au format JSON) ;
  • Correction apportée pour certaines bases de données quand une clé étrangère fait partie de la clé primaire ;
  • Correction apportée pour la sérialisation du type QSharedPointer avec le moteur boost::serialization quand un même pointeur nu est partagé par plusieurs pointeurs intelligents QSharedPointer pendant le processus de désérialisation.


Modifications apportées à l'application QxEntityEditor 1.2.1 :
  • Support de CMake : chaque projet C++ généré par QxEntityEditor (classes persistantes, services, modèle/vue) intègre un fichier CMakeLists.txt pour pouvoir être construit avec CMake ;
  • Nouveau manuel utilisateur (documentation) pour l'application QxEntityEditor ;
  • Amélioration du moteur Javascript pour personnaliser les exports : ajout d'un paramètre nommé 'output_location' pour connaitre le répertoire de destination des fichiers générés + ajout de fonctions pour récupérer la liste de toutes les entités et énumérations d'un projet (voir le fichier ./samples/custom_script.js pour plus de détails) ;
  • Amélioration du processus d'import de bases de données (SQLite, MySQL/MariaDB, PostgreSQL, Oracle et MSSQLServer) : correction de l'import de clés étrangères sur plusieurs colonnes + clés étrangères faisant partie de la clé primaire ==> il est donc à présent possible d'importer des structures plus complexes de bases de données ;
  • Amélioration de l'export DDL SQL de base de données : correctif apporté pour les relations de type 1-1 + gestion des clés composites ;
  • Nouveau menu "Naming convention" pour appliquer rapidement une convention de nommage sur toutes les entités/propriétés/énumérations (sans casser le lien avec la base de données) : support des conventions de nommage snake_case, camelCase et PascalCase, ce nouveau menu peut être utile par example après un import de base de données pour harmoniser le code C++ qui sera généré ;
  • Chaque écran de l'application QxEntityEditor dispose à présent d'un accès rapide à la documentation en ligne (nouveau bouton "Documentation" + accès rapide avec la touche F1) ;
  • Nouveaux boutons undo/redo dans la barre d'outils de QxEntityEditor pour annuler et refaire les actions sur les entités, énumérations, commentaires, layout (possibilité de désactiver cette nouvelle fonctionnalité pour améliorer les performances avec des projets volumineux) ;
  • Support de l'option de compilation _QX_UNITY_BUILD pour réduire les temps de compilation des projets C++ générés (recommandé avec CMake qui ne supporte pas nativement les en-têtes pré-compilés) ;
  • Correction apportée pour l'import des relations lorsque l'entité cible n'a pas de clé primaire ;
  • Correction apportée sur la génération des services C++ et la sérialisation JSON (erreur "Unable to create nude pointer for input parameter") ;
  • Correction apportée sur les entités abstraites et la génération des classes C++ de services et modèles/vues ;
  • Possibilité de définir des valeurs hexadécimales pour les énumérations ;
  • Nouvel exemple de fichier Javascript dans le dossier ./samples/ nommé q_property.js pour montrer comment ajouter automatiquement la macro Q_PROPERTY sur toutes les propriétés générées par QxEntityEditor.




Vous pouvez télécharger ces nouvelles versions sur le site internet de QxOrm et QxEntityEditor : http://www.qxorm.com/


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de AoCannaille AoCannaille - Membre chevronné https://www.developpez.com
le 13/12/2016 à 10:16
Cet outils à l'air bien sympa, en plus il vient avec 2 types de licences : GPLv3 & propriétaire.

Pour des grosses boites le prix de la licence propriétaire est acceptable, mais pour des projets plus petit, c'est assez lourd...
Avatar de QxOrm QxOrm - Membre expert https://www.developpez.com
le 22/12/2016 à 9:45
Une régression a été trouvée avec QxEntityEditor 1.2.1 (comparée à l'ancienne version 1.1.9).
Un contournement facile et rapide existe, plus de détails sur le forum anglais de QxOrm.
Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -