QxOrm is a C++ library available under a dual license :
- GNU/GPLv3 license : open-source and free (to develop an open-source project or to evaluate QxOrm library) ;
- Proprietary license to distribute an application based on QxOrm library without any restrictions of GNU/GPLv3 license.
|

QxOrm library has been accepted into the Qt Ambassador Program
|
QxEntityEditor is a graphic editor for QxOrm library : QxEntityEditor provides a graphic way to manage the data model.
QxEntityEditor is multi-platform (available for Windows, Linux and Mac OS X) and generate native code for all environments : desktop (Windows, Linux, Mac OS X), embedded and mobile (Android, iOS, Raspberry Pi, etc.).
Note : by default, QxEntityEditor application is limited to 5 entities per project.
To get a license key and create unlimited entities per project, please contact us using this e-mail : contact@qxorm.com.
A presentation video of QxEntityEditor application is available.
Price of a QxEntityEditor license key : 300€ (per developer, 12 months of free updates).
Before installing and compiling QxOrm, you need the following libraries : boost (from version 1.38) and Qt (from version 4.5.0) :
 |
boost : many of boost's founders are on the C++ standard committee and several boost libraries have been accepted for incorporation into C++1x (new standard for the C++ programming language).
The boost's libraries are aimed at a wide range of C++ users and application domains.
QxOrm uses the following features of boost : smart_pointer, serialization, type_traits, multi_index_container, unordered_container, any, tuple, foreach, function.
It is recommended to install the latest version of boost available at the following address : http://www.boost.org/ |
 |
Qt : cross-platform application development framework : ihm (QtGui), network (QtNetwork), xml (QtXml), database (QtSql)...
Qt provides excellent support and documentation. Using Qt, you can write simple and powerful C++ code.
Qt is produced by Digia's Qt Development Frameworks division and is available under LGPL license.
QxOrm is compatible with a lot of Qt's objects : QObject, QString, QDate, QTime, QDateTime, QList, QHash, QSharedPointer, QScopedPointer...
It is recommended to install the latest version of Qt available at the following address : http://www.qt.io/ |
QxOrm library history :
Changes in version 1.3.2:
- Support C++11 types (need to set compilation options in QxOrm.pri config file to enable these features)
- With _QX_CPP_11_SMART_PTR compilation option : std::unique_ptr, std::shared_ptr, std::weak_ptr
- With _QX_CPP_11_CONTAINER compilation option : std::unordered_map, std::unordered_set, std::unordered_multimap, std::unordered_multiset
- With _QX_CPP_11_TUPLE compilation option : std::tuple
Changes in version 1.3.1:
- New class qx::QxModelService<T, S> in QxModelView module to connect a Qt model to services to execute client-server requests (can be used with QML and QtWidgets views)
- Add some useful methods to qx::IxModel class and fix several issues with the QxModelView module
- Support last version of MinGW with large precompiled header bug : new compilation option _QX_NO_PRECOMPILED_HEADER (to enable in QxOrm.pri file)
- Fix issue when loading several shared libraries on Windows with services registered in QxService module
- Fix the qx::QxSqlQuery serialization process used by QxService module to send requests over network
- Fix an issue with qx::QxCollection<Key, Value> class when inserting an item at last position
Changes in version 1.2.9:
- Improve nested models in QxModelView module to be able to use several relationships levels in QML
Changes in version 1.2.8:
- New function qx::model_view::create_nested_model (QxModelView module) used by QxEntityEditor to manage complex data structure to work with relationships in QML views and Qt model/view architecture
- New section in the QxOrm.pri file with some tips to reduce output binaries size
- Fix the call of triggers to have the inserted ID inside the trigger function with PostgreSQL
Changes in version 1.2.7:
- New module QxModelView : now, all classes registered into QxOrm context can be used with Qt model/view architecture (Qt widgets and/or QML views)
- qx::IxModel interface provides an easy way to work on QML with QxOrm library and interact with databases
- For more details about the new module QxModelView, goto the FAQ : 'How to use QxModelView module to interact with Qt model/view architecture (Qt widgets and/or QML views) ?'
- New function qx::dao::save_with_relation_recursive(), useful to save a full tree structure for example
- Remove the dependency on the STL compatibility functions in Qt (QT_NO_STL), which may not be available (thanks to KDE Plasma Media Center team for the patch)
- Support database table defined into a schema (using qx::IxDataMember::setName() function)
Changes in version 1.2.6:
- First version full compatible with QxEntityEditor application : the graphic editor for QxOrm library !
- For more details about QxEntityEditor, go to QxOrm website : http://www.qxorm.com/
- Thanks to the recent release of Qt 5.2, QxOrm library can now be used on Android and iOS
- Improve relationships and triggers engine
- Triggers onBeforeFetch() and onAfterFetch() called when fetching relationships
- Fix release mode detection during compilation : should improve performance on some environments
- Add serialization for QSqlError, qx::QxSqlQuery, qx::QxInvalidValue and qx::QxInvalidValueX classes
Changes in version 1.2.5:
- New license : go to download page of QxOrm website for more details
- Support Qt5
- New compiler supported : Clang (tested on Mac OS X)
- Now each QxOrm version will be tested in 32-bit and 64-bit mode
- Improve QxOrm introspection engine : possibility to register static class methods
- Improve QxService module : now it's easy to add an authentication process on server side
- New class qx::exception to get error code + error description with services methods throwing an exception
- New settings available in QxOrm.pri config file (whithout changing QxConfig.h file)
- Possibility to implement specifics database SQL functions overriding qx_query class
- Fix an issue when fetching multiple levels of relationship and NULL pointers
- Fix a bug with MS SQL Server database and update queries using auto-increment id
Changes in version 1.2.4:
- New relationship engine to fetch easily many levels of relationships per query
- For more details about this new engine, goto the FAQ : 'How to use relationship engine to fetch datas from many tables ?'
- Add 2 functions : qx::dao::execute_query and qx::dao::call_query to call a stored procedure or a custom SQL query
- For more details about this new feature, goto the FAQ : 'How to execute a stored procedure or a custom SQL query ?'
- Add support for boost::optional type to manage NULL database value without using QVariant type
- New class : qx::QxDaoAsync to make easier to execute queries in asynchronous way (multi-thread)
- For more details about this new class, goto the FAQ : 'How to use qx::QxDaoAsync class to execute queries in asynchronous way (multi-thread) ?'
Changes in version 1.2.3:
- New interface 'qx::IxPersistable' (abstract class) to simplify polymorphism using QxOrm library
- For more details about this new interface, goto the FAQ : 'How to use qx::IxPersistable interface ?'
- New methods into 'qx::IxCollection' interface to iterate over each items without knowing its type
- New option into 'QxOrm.pri' file to build QxOrm library statically (see '_QX_STATIC_BUILD' option)
- New triggers : 'qx::dao::on_before_fetch' and 'qx::dao::on_after_fetch' (for more details, goto the FAQ : 'How to define a Trigger with QxOrm ?')
- Add 'std::type_info' class information to introspection engine
- Some minor bugs fixed ('qx::dao::sql_error' exception message, SQL query column alias, mutex, etc.)
Changes in version 1.2.2:
- New module to provide a validation engine : QxValidator module
- For more details about QxValidator module, goto the FAQ of QxOrm library : 'How to use QxValidator module to validate automatically an instance ?'
- Fix last insert ID with PostgreSQL using 'RETURNING' keyword : fetch inserted ID instead of OID
- Improve SQL generator providing the good SQL type for all databases
- Add support for special database keywords using '[', ']' and '"' characters
Changes in version 1.2.1:
- Improve 'qx::QxSqlQuery' class : new engine to build queries without writing SQL, for more details, see the FAQ 'How to build a query without writing SQL with the class qx::QxSqlQuery ?'
- Improve 'qx::QxSession' class : provide persistent methods (CRUD) without using 'qx::dao::xxx' functions, for more details, see the FAQ 'How to use a session (qx::QxSession class) to manage automatically database transactions (using C++ RAII) ?'
- Implement 'repository' pattern to provide a common interface for persistent methods (CRUD) with 3 new classes : 'qx::IxRepository', 'qx::QxRepository<T>' and 'qx::QxRepositoryX'
- Possibility to serialize a QVariant 'UserType' with serialization engine of QxOrm library
- Improve thread-safe 'qx::cache' : add insertion date-time into the cache to verify that an element must be updated or not, for more details, see the FAQ 'How to use the cache (functions into namespace qx::cache) of QxOrm library ?'
- FAQ updated on QxOrm website with now 28 questions and answers
Changes in version 1.1.9:
- Possibility to register automatically Qt meta-properties (using Q_PROPERTY macro) to QxOrm context without writing mapping function per class (void qx::register_class<T>())
- Strong integration with Qt introspection/moc engine : for more details about this new feature, goto the FAQ 'How to register automatically Qt meta-properties to QxOrm context ?'
- Improve introspection/reflection engine : see the FAQ (How to use introspection engine (or reflection engine) of QxOrm library ?) for more details
- Possibility to add meta-data (using a property bag) to introspection engine : see 'IxClass', 'IxDataMember' and 'IxFunction' classes for more details
- Add function 'qx::QxClassX::dumpSqlSchema()' to explain how to create your own SQL schema based on C++ classes
- New class 'qx::QxSimpleCrypt' to provide encryption/decryption (thanks very much to Andre Somers) : so it's now possible to store encrypted data into database without using an external library
- QxService module : new feature to encrypt/decrypt data before transfering it over network
Changes in version 1.1.8:
- QxOrm library can now be used on Mac (thanks very much to Dominique Billet) : see 'osx_build_all_debug.sh' and 'osx_build_all_release.sh' scripts to build QxOrm library and all samples in './test/' directory
- Add 'qx::QxSession' class : define a session to manage automatically database transactions (using C++ RAII), see the FAQ for more details
- Add 'qx::QxDateNeutral', 'qx::QxTimeNeutral' and 'qx::QxDateTimeNeutral' classes : helper classes to store date-time value into database under neutral format => cross database compatibility
Changes in version 1.1.7:
- Add soft delete behavior : see the FAQ (How to define a soft delete behavior ?) for more details about this new feature
- Add functions into namespace 'qx::dao' to update an element with a SQL condition : update_by_query, update_optimized_by_query, etc.
- Fix a bug when QVariant type is used for a property of a persistent class : so, it's now possible to insert NULL value into database
Changes in version 1.1.6:
- QxOrm library online documentation available : 'http://www.qxorm.com/doxygen/index.html'
- Possibility to disable QtGui dependency using compilation option in 'QxConfig.h' file : _QX_ENABLE_QT_GUI_DEPENDENCY
- Possibility to disable QtNetwork dependency (so QxService module too) using compilation option in 'QxConfig.h' file : _QX_ENABLE_QT_NETWORK_DEPENDENCY
- Provide a new macro to register abstract class into QxOrm context : QX_REGISTER_ABSTRACT_CLASS()
Changes in version 1.1.5:
- New feature available : 'QxService' module to create C++ application server
- 'QxService' provides an easy and powerful way to create services and to transfer data over network
- New tutorial available to explain how 'QxService' module works
- New sample available at './test/qxClientServer' directory
- QxOrm can be built with 'CONFIG += no_keywords' flag in '*.pro' files
- Bug fix with 'qx::dao::create_table<>' function and relation 'many-to-many'
- QxOrm should now build fine with GCC <= 4.2
Changes in version 1.1.4:
- New parameter in functions 'qx::dao::fetch_by_id', 'qx::dao::fetch_all', 'qx::dao::fetch_by_query' and 'qx::dao::update' to define a list of properties to fetch/update (by default, all properties are fetched/updated)
- Support multi-columns primary key (composite key) : see sample './test/qxBlogCompositeKey/'
- Improve strategy of inheritance : QxOrm supports 'Concrete Table Inheritance' strategy ('Concrete Table Inheritance' becomes default strategy)
- New smart-pointer 'qx::dao::ptr<T>' based on Qt 'QSharedPointer<T>' to provide 2 new features : 'is dirty' and 'update optimized'
- 'qx::dao::ptr<T>' can be used with a simple object and with many containers (stl, boost, Qt and 'qx::QxCollection' containers)
- 'qx::dao::ptr<T>' keeps original values from database and provides a 'isDirty()' method to retrieve all properties changed
- 'qx::dao::update_optimized' must be used with 'qx::dao::ptr<T>' to save into database only properties changed
Changes in version 1.1.3:
- This version works fine with MinGW on Windows
Changes in version 1.1.2:
- License LGPL
- Fix compilation problems on Linux and boost > 1.38
- Fix sql query with MySql database
- Disable assert when qx::dao functions return an error
Changes in version 1.1.1:
- This version supports Visual Studio 2010
Changes in version 1.1.0:
- First release
|
QxEntityEditor application history :
Changes in version QxEntityEditor 1.1.8:
- Improve import plugins : reduce import process time : now, you can import hundred of entities in few seconds into a QxEntityEditor project
- Relationship n-1 : possibility to define a database column name different than the relationship name
- New file qxBlogExec.zip in the ./samples/ directory of QxEntityEditor package : this is a C++/Qt example project which depends on the qxBlog.qxee generated files
- Improve import by ODBC plugin screen : new schema/namespace level in the list of tables/views treeview
- Fix a performance issue to load large diagram with new style to draw relationships : you can now load quickly a project with hundred of entities
- Add new C++11 types to manage relationships, decoration, collection (std::shared_ptr, std::unordered_map and std::unordered_set) : C++11 features must be enabled in QxOrm.pri config file to use these classes
- Import process more permissive : possibility to import tables without primary key and tables without column
Changes in version QxEntityEditor 1.1.7:
- New Navigator window (under project treeview) : useful to navigate over large diagram
- New way to draw relationships (orthogonal lines between 2 entities) + display the relationship type on each side (there is an option to use the old drawing style from previous version)
- Possibility to define a background color by namespace : useful to group all entities in the diagram associated to a same namespace
- New feature to customize entities/enumerations/notes colors at several levels
- Define items colors at project level (menu Tools >> Project settings >> Colors tab)
- Define items colors at namespace level (right-click on the diagram >> Define colors by namespace)
- Define colors at item level : right-click on an item (entity, enumeration or comment) >> Define item colors
- New action to organize automatically the diagram layout, useful after an import process for example (menu View >> Organize diagram layout)
- Improve the DDL SQL export plugin : new option to export relationships as foreign keys constraints in database
- Support the new compilation option _QX_NO_PRECOMPILED_HEADER of QxOrm library (workaround for a known bug of recent versions of MinGW on Windows and large precompiled header)
- Import database by ODBC plugin : fix the import from MS SQL Server database when tables are not located in the default schema (dbo)
- QxEntityEditor Mac OS X version : fix an issue to load the QxEEPrinter plugin
- Export plugin to C++ model/view project : new option to generate models based on the new QxOrm library class qx::QxModelService<T, S> (models based on services to execute client-server requests)
Changes in version QxEntityEditor 1.1.6:
- New javascript engine to customize the C++ and DDL SQL export process writing your own custom script
- Integrated debugger to debug your own custom javascript files (for example, putting a breakpoint or logging some traces)
- New plugin to print the entities diagram as a PNG image file and PDF file
- New property parameter UNIQUE (in property params window) used by the DDL SQL generator to create the database schema
- Improve nested models in QxModelView module to be able to use several relationships levels in QML
- Possibility to change the order in the list of properties and list of relationships of an entity
- Change encoding of generated files : now files are UTF-8
- Possibility to put a relative path to the QxEntityEditor project file (*.qxee file) in each plugin location settings
Changes in version QxEntityEditor 1.1.5:
- New C++ model/view export plugin to manage complex data structure to work with relationships in QML views and Qt model/view architecture (using QxModelView module of QxOrm library)
- Now, with this new export plugin, working on QML with C++ entities has never been so easy !
- New function, menu "Tools >> Plugins scripts", to define your own custom scripts before/after a plugin execution
- New command line parameter --log_sql to trace all SQL queries executed by QxEntityEditor : a QxEntityEditor project file (*.qxee) is just a SQLite database, so it's easy to write your own script to customize some default behaviour
- New option in the C++ export plugin to generate or not the custom directory with all custom files for each entity
- Scrollbar available in the entities viewer
Changes in version QxEntityEditor 1.1.4:
- Improve import by ODBC plugin to manage relationship, schema and composite key for SQLite, MySQL, PostgreSQL, Oracle and MS SQL Server databases
- New import from SQLite plugin to import SQLite database structure into QxEntityEditor project without having to create an ODBC DSN connexion
- Improve C++ export plugin : add a set of useful methods in generated classes + option to manage relative path to QxOrm library
- New menu to rename a namespace (move all entities to another namespace) and delete a list of entities by namespace
- Fix a bug when executing QxEntityEditor in command line (no GUI)
- Add a viewer mode to open a QxEntityEditor project with unlimited entities count without having a license key (read-only mode)
Changes in version QxEntityEditor 1.1.3 (first official release):
- New plugin to transfer your data model over network and create quickly client/server applications, using QxService module
- New options to define entity, enum and comment width in entities viewer
Changes in version QxEntityEditor 1.1.2 (BETA):
- New plugin to generate DDL SQL script (database schema) for SQLite, MySQL, PostgreSQL, Oracle and MS SQL Server databases
- The new DDL SQL plugin manages automatically schema evolution for each project version (ALTER TABLE, ADD COLUMN, DROP INDEX, etc.)
- Add post-it or comments in the entities viewer
- Option to display or not property type in the entities viewer
Changes in version QxEntityEditor 1.1.1 (BETA):
- First BETA version of QxEntityEditor application
- Provide a graphic way to manage the data model for QxOrm library
- Multi-platform (available for Windows, Linux and Mac OS X) and generate native code for all environments : desktop (Windows, Linux, Mac OS X), embedded and mobile (Android, iOS, Raspberry Pi, etc.)
- Based on plugins and provides many ways to import/export the data model
- Generate C++ persistent classes automatically (registered into QxOrm context)
|
|