Files
XdlOrm/doc/qxorm_en/home.html
2026-04-03 11:32:07 +08:00

411 lines
24 KiB
HTML
Raw Blame History

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>QxOrm : C++ Qt ORM Object Relational Mapping database library - QxEntityEditor : C++ Qt entities graphic editor
(data model designer and source code generator)</title>
<link rel='stylesheet' type='text/css' href='./resource/qxorm_style.css'>
<script type="text/javascript" src="./resource/jquery.min.js"></script>
<script type="text/javascript" src="./resource/qxorm_script.js"></script>
</head>
<body>
<table border="0" style="width: 80%" align="center">
<col>
<col>
<col>
<col>
<col>
<tbody>
<tr>
<td><a href="./home.html"><img alt="QxOrm" src="./resource/logo_qxorm_and_qxee.png" align="left" border="0"></a>
</td>
<td align="right" style="vertical-align:bottom">
<div id="qx_search">
<gcse:search></gcse:search>
</div>
</td>
<td width="15"></td>
<td align="right" style="vertical-align:bottom">
<img alt="Windows" src="./resource/logo_windows.gif" width="35" height="35">
<img alt="Linux" src="./resource/logo_linux.gif" width="35" height="35">
<img alt="Macintosh" src="./resource/logo_mac.gif" width="35" height="35">
</td>
<td width="70"><img alt="C++" src="./resource/logo_cpp.gif" width="50" height="50" align="right"></td>
</tr>
</tbody>
</table>
<hr style="width: 80%" align="center" size="1" color="#100D5A">
<table border="0" style="width: 80%" align="center">
<col>
<col>
<col>
<col>
<col>
<col>
<tbody>
<tr>
<td align="center"><a href="./home.html" class="btn_nav">Home</a></td>
<td align="center"><a href="./download.html" class="btn_nav">Download</a></td>
<td align="center"><a href="./quick_sample.html" class="btn_nav">Quick sample</a></td>
<td align="center" onmouseover="showHideElementById('menu_tuto', true);"
onmouseout="showHideElementById('menu_tuto', false);">
<a href="./tutorial.html" class="btn_nav">Tutorial (4)</a>
<table class="table_menu_tuto">
<tbody>
<tr>
<td>
<div id="menu_tuto" class="div_menu_tuto">
<a href="./tutorial_3.html" class="btn_sub_menu">install QxOrm</a><br />
<a href="./tutorial.html" class="btn_sub_menu">qxBlog</a><br />
<a href="./tutorial_2.html" class="btn_sub_menu">qxClientServer</a><br />
<a href="./tutorial_4.html" class="btn_sub_menu">QxEntityEditor videos</a>
</div>
</td>
</tr>
</tbody>
</table>
</td>
<td align="center" onmouseover="showHideElementById('menu_manual', true);"
onmouseout="showHideElementById('menu_manual', false);">
<a href="./manual.html" class="btn_nav">Manual (2)</a>
<table class="table_menu_manual">
<tbody>
<tr>
<td>
<div id="menu_manual" class="div_menu_manual">
<a href="./manual.html" class="btn_sub_menu">QxOrm manual</a><br />
<a href="./manual_qxee.html" class="btn_sub_menu">QxEntityEditor manual</a><br />
</div>
</td>
</tr>
</tbody>
</table>
</td>
<td align="center"><a href="./link.html" class="btn_nav">Forum</a></td>
<td align="center"><a href="./customer.html" class="btn_nav">Our customers</a></td>
</tr>
</tbody>
</table>
<hr style="width: 80%" align="center" size="1" color="#100D5A">
<table border="0" style="width: 80%" align="center">
<col>
<col>
<col>
<col>
<col>
<col>
<tbody>
<tr>
<td align="left" valign="top">
<font size="2" class="txt_with_shadow">QxOrm &gt;&gt; Home</font>
</td>
<td align="right" valign="top">
<table cellspacing="0" cellpadding="1">
<col>
<col>
<tbody>
<tr>
<td align="right" valign="top">
<font size="2" class="txt_with_shadow">Current version :&nbsp;</font>
</td>
<td align="left" valign="top">
<font size="2" class="txt_with_shadow">QxOrm 1.5.0 - <a href="../doxygen/index.html"
target="_blank">QxOrm library online class documentation</a> - <a
href="https://github.com/QxOrm/QxOrm" target="_blank">GitHub</a></font>
</td>
</tr>
<tr>
<td align="right" valign="top">
<font size="2" class="txt_with_shadow"></font>
</td>
<td align="left" valign="top">
<font size="2" class="txt_with_shadow">QxEntityEditor 1.2.8</font>
</td>
</tr>
</tbody>
</table>
</td>
<td width="10px"></td>
<td width="40px" height="30px"><a href="../qxorm_fr/home.html"><img alt="Version fran<61>aise du site"
src="./resource/FR.png" width="40" height="30" border="0"></a></td>
<td width="40px" height="30px"><a href="../qxorm_en/home.html"><img alt="Web site english version"
src="./resource/GB.png" width="40" height="30" border="0"></a></td>
<td width="40px" height="30px"><a href="http://sites.google.com/site/qxormpostgres/" target="_blank"><img alt=""
src="./resource/ES.png" width="40" height="30" border="0"></a></td>
</tr>
</tbody>
</table>
<table border="1" frame="vsides" rules="cols" style="width: 80%" align="center" cellpadding="6" bgcolor="#F2F2F4">
<col>
<tbody>
<tr>
<td align="justify">
<table border="0" style="width: 100%" align="center">
<col>
<col>
<tbody>
<tr>
<td>
<h1 class="txt_slogan">QxOrm (the engine) + QxEntityEditor (the graphic editor) = the best solution to
manage your persistent data layer in C++/Qt !</h1>
<br />
<hr style="width: 90%" align="center" size="1" color="#100D5A">
<br /><b>QxOrm library is an <i>Object Relational Mapping (ORM)</i> database library for C++/Qt
developers.</b>
With a simple <b>C++ setting function per class</b> (like <a href="http://hibernate.org/"
target="_blank"><i>Hibernate</i></a> XML mapping file in Java), you have access to the following
features :<br>
<ul>
<li><b>
<font style="background-color:yellow"><a href="./manual.html#manual_30">Persistence</a></font>
</b> : support most common databases like SQLite, MySQL, PostgreSQL, Oracle, MS SQL Server, <a
href="./manual.html#manual_95">MongoDB</a> (with <i>1-1</i>, <i>1-n</i>, <i>n-1</i> and
<i>n-n</i> relationships) ;
</li>
<li><b>
<font style="background-color:yellow"><a href="./manual.html#manual_60">Serialization</a></font>
</b> : JSON, binary and XML format ;</li>
<li><b>
<font style="background-color:yellow"><a href="./manual.html#manual_70">Reflection</a></font>
</b> (or <b>
<font style="background-color:yellow"><a href="./manual.html#manual_70">introspection</a></font>
</b>) : access dynamically to classes definitions, retrieve properties and call classes methods ;
</li>
<li><b>
<font style="background-color:yellow"><a href="./manual.html#manual_96">HTTP web server</a>
</font>
</b> : standalone multi-threaded HTTP 1.1 web server (support SSL/TLS, persistent connections,
cookies, sessions, chunked responses, URL dispatcher/routing) ;</li>
<li><b>
<font style="background-color:yellow"><a href="./manual.html#manual_97">JSON API</a></font>
</b> : interoperability with other technology than C++/Qt (REST web services, QML applications,
scripting language).</li>
</ul>
<hr style="width: 90%" align="center" size="1" color="#100D5A">
</td>
<td width="200" align="center" valign="top"><a href="./resource/qt_ambassador_logo.png"
target="_blank"><img alt="qt_ambassador" src="./resource/qt_ambassador_logo_150x150.png" width="150"
height="150" border="0"></a><br>
<b>
<font size="2">QxOrm library has been accepted into the <a
href="http://forum.qt.io/category/24/qt-ambassador-program" target="_blank">Qt Ambassador
Program</a></font>
</b>
</td>
</tr>
</tbody>
</table>
<br />
<b>QxEntityEditor</b> is a graphic editor for <b>QxOrm</b> library : <b>QxEntityEditor</b> provides a graphic
way to manage the data model.<br>
<b>QxEntityEditor</b> is multi-platform (available for Windows, Linux and Mac OS X) and generates native code
for all environments : desktop (Windows, Linux, Mac OS X), embedded and mobile (Android, iOS, Windows Phone,
Raspberry Pi, etc.).<br>
<a href="./manual_qxee.html">A user manual (documentation) for <b>QxEntityEditor</b> application is
available</a>.<br>
<br>
<b>QxEntityEditor</b> is based on plugins and provides many ways to import/export your data model :
<ul>
<li><a href="./manual_qxee.html#cpp_export_settings">generate C++ persistent classes</a> automatically
(registered in QxOrm context) ;</li>
<li><a href="./manual_qxee.html#ddl_export_settings">generate DDL SQL script</a> automatically (database
schema) for SQLite, MySQL, PostgreSQL, Oracle and MS SQL Server ;</li>
<li>manage schema evolution for each project version (<i>ALTER TABLE</i>, <i>ADD COLUMN</i>, <i>DROP
INDEX</i>, etc.) ;</li>
<li>transfer your data model over network and <a
href="./manual_qxee.html#cpp_services_export_settings">create quickly client/server applications</a>,
using <a href="../doxygen/html/group___qx_service.html" target="_blank">QxService</a> module ;</li>
<li><a href="./manual_qxee.html#wnd_mysql_import">import existing database structure</a> (using ODBC
connection or native drivers) for SQLite, MySQL, PostgreSQL, Oracle and MS SQL Server databases ;</li>
<li>because each project is different, QxEntityEditor provides several ways to customize generated files
(especially <a href="./manual_qxee.html#js_engine">a javascript engine and an integrated debugger</a>).
</li>
</ul>
<a href="../qxentityeditor/resource/qxee_sample.png" target="_blank"><img alt="QxEntityEditor"
src="../qxentityeditor/resource/qxee_sample_small.png" border="0" class="img_with_shadow"></a>
<br><br>
<hr style="width: 90%" align="center" size="1" color="#100D5A">
<br>
<b>QxOrm</b> library is designed to make easier C++ development and provides many functionalities.<br>
Here is a list of advantages of QxOrm library :
<ul>
<li><b>non intrusive</b> : the <i>C++ setting function per class</i> doesn't modify class definition, QxOrm
can be used in existing projects ;</li>
<li><b>no XML mapping file</b> ;</li>
<li><b>classes doesn't need to inherit from a 'super object'</b> ;</li>
<li><b>template meta-programming</b> : no macro hack ;</li>
<li>works with <b>Visual C++</b> on Windows, <b>GCC</b> on Linux, <b>Clang</b> on Mac OS X, and <b>MinGW</b>
on Windows (other platforms will be tested soon : smartphones, etc...) ;</li>
<li>only one file <i>&lt;QxOrm.h&gt;</i> to include in precompiled-header (<b>precompiled-header</b> file is
recommended to reduce compilation times).</li>
</ul>
<br>
<b>QxOrm</b> is based on <a href="http://www.qt.io/" target="_blank"><b>Qt framework</b></a> (support Qt4,
Qt5, Qt6) :
<!-- and <a href="http://www.boost.org/" target="_blank"><b>boost</b></a> (from version 1.38, and by default just header files <i>*.hpp</i> are necessary) : -->
<p></p>
<table border="0" style="width: 100%" align="center">
<col>
<col>
<tbody>
<tr>
<td valign="middle" width="161" align="center"><a href="http://www.qt.io/" target="_blank"><img alt="Qt"
src="./resource/logo_qt.jpg" width="42" height="50" border="0"></a></td>
<td align="justify"><b>Qt</b> : cross-platform application development framework : GUI (<i>QtGui</i>),
network (<i>QtNetwork</i>), XML (<i>QtXml</i>), database (<i>QtSql</i>)...<br>
Qt provides excellent support and documentation. Using Qt, you can write simple and powerful C++
code.<br>
Qt is produced by Digia's Qt Development Frameworks division and is available under LGPL license.<br>
QxOrm is compatible with many Qt's objects : <i>QObject, QString, QDate, QTime, QDateTime, QList,
QHash, QSharedPointer, QScopedPointer...</i><br>
It is recommended to install the latest version of Qt available at the following address : <a
href="http://www.qt.io/" target="_blank">http://www.qt.io/</a></td>
</tr>
</tbody>
</table>
<p></p>
<!--
<table border="0" style="width: 100%" align="center">
<col><col>
<tbody>
<tr>
<td valign="middle" width="161" align="center"><a href="http://www.boost.org/" target="_blank"><img alt="boost" src="./resource/logo_boost.jpg" width="161" height="50" border="0"></a></td>
<td align="justify"><b>boost</b> : 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.<br>
QxOrm uses the following boost's features (header files <i>*.hpp</i> only, boost <i>serialization</i> dependency is optional) : <i>smart_pointer, type_traits, multi_index_container, unordered_container, any, tuple, foreach, function.</i><br>
It is recommended to get the latest version of boost available at the following address : <a href="http://www.boost.org/" target="_blank">http://www.boost.org/</a></td>
</tr>
</tbody>
</table>
<p></p>
-->
<br>
<p><b>QxOrm</b> provides the following modules :</p>
<ul>
<li>
<p><b><a href="../doxygen/html/group___qx_dao.html" target="_blank">QxDao</a></b> : based on <b>Qt</b> <a
href="http://doc.qt.io/qt-5/qtsql-index.html" target="_blank"><i>QtSql</i></a> engine, this module
provides communication with databases (<i>select, update, delete, transaction</i>...) by mapping
database table columns with C++ class properties. The relationships <i>1-1</i>, <i>1-n</i>, <i>n-1</i>
and <i>n-n</i> are easy to setup in C++ code. This module supports object-oriented programming :
inheritance, polymorphism, modularity. It supports also many containers (<b>stl</b>, <b>boost</b> and
<b>Qt</b> : <i>std::vector, std::list, std::unordered_map, QList, QHash...</i>).
</p>
</li>
<li>
<p><b><a href="../doxygen/html/group___qx_register.html" target="_blank">QxRegister</a>, <a
href="../doxygen/html/group___qx_data_member.html" target="_blank">QxDataMember</a>, <a
href="../doxygen/html/group___qx_factory.html" target="_blank">QxFactory</a></b> and <b><a
href="../doxygen/html/group___qx_function.html" target="_blank">QxFunction</a></b> : <b>QxOrm</b>
emulates <i>reflection</i> (or <i>introspection</i>) mechanism (like other languages : Java, C#...).</p>
</li>
<li>
<p><b><a href="../doxygen/html/group___qx_model_view.html" target="_blank">QxModelView</a></b> : each
class registered in QxOrm context can be used by the <a href="http://doc.qt.io/qt-5/modelview.html"
target="_blank">Qt model/view engine</a> (Qt widgets and/or QML views). <a
href="../doxygen/html/classqx_1_1_ix_model.html" target="_blank">qx::IxModel</a> interface exposes
automatically to QML engine all properties defined in QxOrm context. This module makes easier
interaction between QML and databases.</p>
</li>
<li>
<p><b><a href="../doxygen/html/group___qx_service.html" target="_blank">QxService</a></b> : based on <a
href="http://doc.qt.io/qt-5/qtnetwork-index.html" target="_blank"><i>QtNetwork</i></a> engine of Qt
library, this module provides an easy and powerful way to create <b>C++ application server</b>
(<i>services</i> concept with <i>request</i> from client and <i>reply</i> from server). <b>QxService</b>
uses <i>serialization</i> and <i>introspection</i> from QxOrm library to transfer over network any class
or structure. For more details about <b>QxService</b> module, <b>a tutorial</b> is available <a
href="./tutorial_2.html">here</a>.</p>
</li>
<li>
<p><b><a href="../doxygen/html/group___qx_collection.html" target="_blank">QxCollection&lt;Key,
Value&gt;</a></b> :
<!-- based on <a href="http://www.boost.org/doc/libs/release/libs/multi_index/doc/index.html" target="_blank"><i>boost::multi_index_container</i></a>, -->
this thread-safe container has advantages of <i>std::vector&lt;T&gt;</i> (insertion order + quick access
by index) and <i>std::unordered_map&lt;Key, Value&gt;</i> or <i>QHash&lt;Key, Value&gt;</i> (quick
access by a key : <i>hash-map</i>). <b>QxCollection&lt;Key, Value&gt;</b> is adapted to contain the
items resulting from a database.
</p>
</li>
<li>
<p><b><a href="../doxygen/html/group___qx_serialize.html" target="_blank">QxSerialize</a></b> : this
module is based on Qt <a href="http://doc.qt.io/qt-5/qdatastream.html"
target="_blank"><i>QDataStream</i></a> class.
<!-- and <a href="http://www.boost.org/doc/libs/release/libs/serialization/doc/index.html" target="_blank"><i>boost::serialization</i></a> library (<a href="http://www.boost.org/doc/libs/release/libs/serialization/doc/index.html" target="_blank"><i>boost::serialization</i></a> dependency is optional and not required by default) -->
Any class defined by QxOrm can be serialized to binary, XML and JSON format. This module also allows to
clone all instances of objects. Most of Qt objects (<i>QObject, QString, QDate, QTime, QDateTime, QList,
QHash...</i>) are compatible with <i>QxSerialize</i> module.
</p>
</li>
<li>
<p><b><a href="../doxygen/html/group___qx_traits.html" target="_blank">QxTraits</a></b> : C++ standard
library provides several generic traits. QxOrm uses them but needs new functionalities that are not
present in std standard library.</p>
</li>
<li>
<p><b><a href="../doxygen/html/group___qx_cache.html" target="_blank">QxCache</a></b> : QxOrm's cache can
contain all types of objects. It's possible for example to store data resulting from a database to avoid
too frequent requests. This cache is generic and can be used in other contexts than QxOrm.</p>
</li>
<li>
<p><b><a href="../doxygen/html/group___qx_validator.html" target="_blank">QxValidator</a></b> : this
module provides a validation engine for classes registered in QxOrm context. To use this validation
engine, you have to define your constraints into the mapping function per class : <i>void
qx::register_class</i>. If for an instance of class, at least one constraint violation is detected,
then the instance is invalid : the object cannot be saved into database (<i>INSERT</i> or
<i>UPDATE</i>). For more information about <i>QxValidator</i> module, <a
href="./manual.html#manual_420">read the manual here</a>.
</p>
</li>
<li>
<p><b><a href="../doxygen/html/group___qx_mem_leak.html" target="_blank">QxMemLeak</a></b> : fast
detection of memory leaks in <i>Debug</i> mode (with indication of file and line =&gt; MFC style from
Microsoft). This module is developed by <a href="http://wyw.dcweb.cn/leakage.htm" target="_blank">Wu
Yongwei</a>. If another tool is already used in your projects (<i>Valgrind</i> for example), this
functionality should not be enabled. By default, <i>QxMemLeak</i> module is disabled.</p>
</li>
</ul>
<p></p>
<br>
<p>You can download the current version of <b>QxOrm</b> library and <b>QxEntityEditor</b> application <a
href="./download.html">here</a>.
<br>A manual (user guide) to learn how to work with QxOrm library is available <a
href="./manual.html">here</a>.
<br>A quick sample showing basic functionalities of <b>QxOrm</b> is available <a
href="./quick_sample.html">here</a>.
<br>If you have any questions about <b>QxOrm</b> library or <b>QxEntityEditor</b> application, a forum is
available <a href="https://www.qxorm.com/forum/phpbb/" target="_blank">here</a>.<br>
</td>
</tr>
</tbody>
</table>
<br>
<hr style="width: 80%" align="center" size="1" color="#100D5A">
<table border="0" style="width: 80%" align="center">
<col>
<col>
<col>
<tbody>
<tr>
<td align="left" valign="middle">
<img alt="QxOrm" src="./resource/logo_qxorm_small.png" width="168" height="40">
</td>
<td align="center" valign="middle">
<font size="2"><EFBFBD> 2011-202XDL Teamty - <a href="mailto:ic-east.com">ic-east.com</a></font>
</td>
<td align="right" valign="middle">
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="2K4Z58ZYAYJ6S">
<input type="image" src="./resource/paypal_support_qxorm_library.gif" border="0" name="submit"
alt="Support QxOrm library - PayPal">
<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
</form>
</td>
</tr>
</tbody>
</table>
</body>
</html>