QxOrm (le moteur) + QxEntityEditor (l'�diteur graphique) = la meilleure
solution pour g�rer sa couche de donn�es persistante en C++/Qt !
QxOrm est une biblioth�que C++ de gestion de donn�es.
A partir d'une simple fonction de param�trage (que l'on peut
comparer avec un fichier de mapping Hibernate en Java), vous
aurez acc�s aux fonctionnalit�s suivantes :
-
Persistance
: support des bases de donn�es SQLite, MySQL, PostgreSQL, Oracle, MS SQL Server, MongoDB (gestion des relations 1-1, 1-n,
n-1 et n-n) ;
-
S�rialisation
des donn�es (flux JSON, binaire et XML) ;
-
R�flexion
(ou
introspection
) pour acc�der dynamiquement aux classes, attributs et invoquer des m�thodes ;
-
Serveur web HTTP
: serveur web compatible HTTP 1.1 autonome, performant, multi-plateforme et simple
d'utilisation ;
-
API JSON
: interop�rabilit� avec d'autres technologies que C++/Qt (web services REST, applications
QML, langages de script).
|

QxOrm library has been accepted into the Qt Ambassador
Program
|
QxEntityEditor est un �diteur graphique pour la biblioth�que QxOrm : QxEntityEditor
permet de g�rer graphiquement le mod�le d'entit�s.
QxEntityEditor est multi-plateforme (disponible pour Windows, Linux et Mac OS X) et g�n�re du code
natif pour tous les environnements : bureau (Windows, Linux, Mac OS X), embarqu� et mobile (Android, iOS,
Windows Phone, Raspberry Pi, etc.).
Un manuel utilisateur (documentation) d�di� � l'application QxEntityEditor
est disponible.
QxEntityEditor est bas� sur un syst�me de plugins et propose diverses fonctionnalit�s pour
importer/exporter le mod�le de donn�es :
- g�n�ration automatique du code C++ (classes
persistantes enregistr�es dans le contexte QxOrm) ;
- g�n�ration automatique des scripts SQL DDL (sch�ma
de base de donn�es) pour les bases SQLite, MySQL, PostgreSQL, Oracle et MS SQL Server ;
- supporte l'�volution du sch�ma de base de donn�es pour chaque version d'un projet (ALTER TABLE,
ADD COLUMN, DROP INDEX, etc.) ;
- g�n�ration automatique des classes C++ de
services pour transf�rer le mod�le de donn�es sur le r�seau, en utilisant le module QxService, pour cr�er rapidement des
applications client/serveur ;
- importation automatique des structures de bases de
donn�es existantes (par connexion ODBC ou pilote natif) pour les bases SQLite, MySQL, PostgreSQL,
Oracle et MS SQL Server ;
- parce que chaque projet est diff�rent, QxEntityEditor propose plusieurs outils pour personnaliser les
fichiers g�n�r�s (notamment un moteur javascript et un d�bogueur
int�gr�).
La biblioth�que QxOrm a pour objectif de simplifier le code C++ tout en offrant un maximum de
fonctionnalit�s.
Voici les principaux avantages de QxOrm :
- non intrusif : la fonction de param�trage se trouve �
l'ext�rieur des classes. La signature des classes n'est donc pas
modifi�e. QxOrm peut donc �tre utilis� dans des projets
existants ;
- aucune n�cessit� d'appartenir � une hi�rarchie de
classes : les classes n'ont pas besoin de d�river d'un 'super
objet' ;
- pas de mapping XML ;
- 1 seul fichier <QxOrm.h> � inclure dans l'en-t�te
pr�compil� (precompiled-header recommand� pour optimiser les temps
de compilation) ;
- aucune n�cessit� d'utiliser le pr�-compilateur 'moc' fourni
par Qt ;
- v�rification des types � la compilation (utilisation intensive
de m�ta-programmation) ;
- compatible avec Visual C++ sous Windows,
GCC sous Linux, Clang sous Mac OS X, et MinGW sous Windows (d'autres environnements
et
plateformes seront test�s prochainement : mobiles, etc...) ;
- compatible avec le d�veloppement de biblioth�ques partag�es
(shared library, *.dll pour Windows, *.so pour Linux,
etc...).
QxOrm est bas� sur la biblioth�que Qt (compatible Qt4, Qt5, Qt6) :
 |
Qt : biblioth�que compl�te : IHM
(QtGui), r�seau (QtNetwork), XML (QtXml), base de donn�es
(QtSql), etc...
La documentation est excellente et le code C++ �crit � partir
de cette biblioth�que est � la fois performant et simple de
compr�hension.
Depuis le rachat par Nokia puis Digia et sa nouvelle licence LGPL, Qt est
sans contexte la biblioth�que phare du moment.
QxOrm est compatible avec les principaux objets d�finis par Qt
: QObject, QString, QDate, QTime, QDateTime, QList, QHash,
QSharedPointer, QScopedPointer, etc...
Il est conseill� d'installer et d'utiliser la derni�re version
de Qt disponible � l'adresse suivante : http://www.qt.io/ |
QxOrm est divis� en sous-modules, voici un descriptif rapide :
-
QxDao : bas� sur le moteur QtSql de Qt, ce module
permet de communiquer (s�lection, modification, suppression,
transaction, etc...) avec de nombreuses bases de donn�es en mappant
chaque champ d'une table avec les propri�t�s d'une classe C++. Les
relations de type 1-1, 1-n, n-1 et n-n sont tr�s simples �
mettre en place dans le code C++. Ce module supporte la
programmation objet : h�ritage, polymorphisme, composition,
association ainsi que les collections (support des collections de
stl, boost et Qt : std::vector, std::list,
std::unordered_map, QList, QHash, etc...).
-
QxRegister, QxDataMember et QxFunction : m�me si
ce n'est pas le but 1er de QxOrm, il est n�cessaire d'�muler le
m�canisme de reflection (ou introspection) pr�sent nativement dans d'autres langages
(Java, C#, etc...) pour utiliser toutes les fonctionnalit�s de
QxOrm.
-
QxModelView :
toute classe enregistr�e dans le contexte QxOrm peut �tre utilis�e par le moteur model/view de Qt (Qt widgets
et/ou vues QML).
L'interface qx::IxModel expose
automatiquement au moteur QML toutes les propri�t�s d�finies dans le contexte QxOrm.
Ce module permet ainsi de faciliter l'int�raction entre QML et les bases de donn�es.
-
QxService : bas� sur le
moteur QtNetwork de Qt,
ce module
permet de cr�er de mani�re simple et performante un serveur d'applications en C++ (notion de
services avec demande du client et r�ponse du serveur). QxService utilise la
serialization et l'introspection des donn�es
et fonctions pour pouvoir faire transiter sur le r�seau n'importe quelle classe ou structure. Pour plus
d'informations sur ce module, un tutoriel est disponible en cliquant
ici.
-
QxCollection<Key,
Value> :
cette collection thread-safe permet de cumuler
les avantages d'un std::vector<T> (conserve l'ordre
d'insertion + acc�s rapide par index) et d'un
std::unordered_map<Key, Value> ou encore QHash<Key,
Value> (acc�s rapide par cl� : hash-map). Ce type de collection
est particuli�rement adapt� pour contenir les �l�ments issus d'une
base de donn�es.
-
QxSerialize :
Toute classe d�finie par QxOrm
peut �tre s�rializ�e dans un flux binaire, XML et JSON. Ce module permet
�galement de cloner toutes les instances d'objet. Les principaux
objets de la biblioth�que Qt (QObject, QString, QDate, QTime,
QDateTime, QList, QHash, etc...) sont compatibles avec le module
QxSerialize. Ce module assure une compatibilit� ascendante avec
prise en compte d'un n� de version par classe.
-
QxFactory : toute instance
d'objet d�finie par QxOrm
peut �tre cr��e en fonction du nom de la classe.
-
QxTraits : ce module
contient une liste de classes de
traits non d�finies dans la biblioth�que standard et qui sont utiles pour
l'utilisation de QxOrm. Ces classes de traits se veulent g�n�riques
et peuvent donc �tre utilis�es dans d'autres contextes que celui de
la biblioth�que QxOrm.
-
QxCache : le 'cache' de
QxOrm peut contenir tous types
d'objets. Il peut permettre par exemple de m�moriser des donn�es
issues d'une base de donn�es pour �viter des requ�tes trop
fr�quentes. Ce cache est g�n�rique et peut �tre utilis� dans d'autres contextes que
celui de QxOrm.
-
QxValidator : ce module
permet d'ajouter des contraintes
sur les propri�t�s enregistr�es dans le contexte QxOrm. Ces contraintes sont d�finies dans la m�thode de
mapping : void qx::register_class.
Si pour une instance de classe donn�e, au moins une contrainte n'est pas respect�e, alors l'instance est
consid�r�e comme invalide :
l'objet ne peut alors pas �tre sauvegard� en base de donn�es (INSERT ou UPDATE). Pour plus
d'informations sur le module QxValidator,
rendez-vous sur le manuel utilisateur de la biblioth�que QxOrm.
-
QxMemLeak : permet une
d�tection rapide des fuites
m�moire en mode Debug une fois l'ex�cution du programme termin�e
(avec indication du fichier et de la ligne => style MFC de
Microsoft). Ce module a �t� d�velopp� par Wu
Yongwei et a subi
quelques modifications pour �tre int�gr� dans QxOrm. Si un autre
outil est d�j� utilis� dans vos projets (Valgrind par exemple),
cette fonctionnalit� ne doit pas �tre activ�e.
Par d�faut, le module QxMemLeak est d�sactiv�.
Vous pouvez t�l�charger la derni�re version de QxOrm et QxEntityEditor en cliquant ici.
Un manuel utilisateur pour apprendre � travailler avec la biblioth�que QxOrm est disponible en cliquant ici.
Un exemple rapide d'utilisation de QxOrm montrant les fonctionnalit�s de base de la biblioth�que
est disponible en cliquant ici.
Un forum (en anglais) d�di� � QxOrm et QxEntityEditor est disponible en cliquant ici.
Vous pouvez �galement retrouver la communaut� fran�aise de QxOrm et QxEntityEditor sur le forum de Developpez.com.
Une documentation en ligne du code source de la biblioth�que QxOrm est disponible en cliquant ici.
|