Projekt

Allgemein

Profil

Herunterladen als
Statistiken
| Zweig: | Revision:
Name Größe Revision Geändert vor Autor Kommentar
  samples 69f995c5 etwa 9 Jahren Sebastian Diel Crash nach Klick auf Svenja Hartmann beim zweit...
  src 00d568c5 etwa 9 Jahren Sebastian Diel sqlite3
  tests 69f995c5 etwa 9 Jahren Sebastian Diel Crash nach Klick auf Svenja Hartmann beim zweit...
.gitignore 26 Bytes 9d05e414 mehr als 9 Jahren Christian Ehringfeld brainfuck
.gitlab-ci.yml 775 Bytes fe8705df etwa 9 Jahren Christian Ehringfeld ...
.travis.yml 718 Bytes bb0340b7 etwa 9 Jahren Christian Ehringfeld ticket #594
AUTHORS 82 Bytes 54538efb etwa 9 Jahren Christian Ehringfeld orga stuff
Doxyfile 102 KB 57d6da31 etwa 9 Jahren Christian Ehringfeld structure
EntityManager.pri 719 Bytes 69f995c5 etwa 9 Jahren Sebastian Diel Crash nach Klick auf Svenja Hartmann beim zweit...
EntityManager.pro 149 Bytes 57d6da31 etwa 9 Jahren Christian Ehringfeld structure
LICENSE 7,47 KB 790ec827 mehr als 9 Jahren Christian Ehringfeld .
README.md 4,46 KB 1701766b etwa 9 Jahren Christian Ehringfeld ticket #596
appveyor.yml 911 Bytes 93178057 etwa 9 Jahren Christian Ehringfeld init test stuff... much more work to do

Aktuellste Revisionen

# Datum Autor Kommentar
69f995c5 15.10.2015 15:48 Sebastian Diel

Crash nach Klick auf Svenja Hartmann beim zweiten Schreiben der DB

3665c42e 13.10.2015 00:29 Sebastian Diel

Merge branch 'master' of ssh://synlos.net/entitymanager

00d568c5 13.10.2015 00:29 Sebastian Diel

sqlite3

e5a0d313 13.10.2015 00:04 Christian Ehringfeld

bugfix

402ef73e 12.10.2015 22:21 Christian Ehringfeld

entity copy method, not fully tested

94090b83 12.10.2015 00:53 Christian Ehringfeld

windoof stupidity or sth else????

4061b346 12.10.2015 00:28 Christian Ehringfeld

samples again

c5d0ed54 12.10.2015 00:25 Christian Ehringfeld

samples and includes

dd41d0c2 12.10.2015 00:09 Christian Ehringfeld

include

5b3fa099 12.10.2015 00:03 Christian Ehringfeld

sample...

Alle Revisionen anzeigen | Revisionen anzeigen

README


CuteEntityManager for Qt

Build status

English

With CuteEntityManager it is possible to persist, merge, find or delete entities. Its functionality is based on JPA's EntityManager. For a different application I was in search of an easy-to-use ORM. Those particular libraries had either additional dependencies, a smaller functional range, were too "complicated" to use (imho) or bound to specific platforms.

CuteEntityManager basically supports all platforms supported by Qt. Because I am a Java & PHP developer for a living, CuteEntityManager is conceptionally based on the aforementioned EntityManager of JPA and in parts on the PHP Yii framework.

CuteEntityManager builds solely on Qt/C++ techniqes. The properties for the ORM are established by the usage of QPROPERTY macros. It is possible to use inheritance. Of course, relations (ONETOONE, MANYTOONE, ONETOMANY and MANYTO_MANY) are also possible. To simplify SELECT statements there is a Query API. Thus, it's possible to implement a whole application with database connection without using a single bit of SQL. Of course, you should be aware of the "specifics" of a relational database (notably in matters of relations). Currently, only SQLite support is passably tested. Extensions for MySQL/PGSQL/MSSQL should be possible quite smoothly.

CuteEntityManager is definitely far from a proper (and tested) or even finished state, but because of its use for the creation of another application, surely this state will successively improve. Criticism, praise, improvement suggestions, pull requests and code reviews are welcome at any time. You can reach me directly by mail under c.ehringfeld[at]t-online.de.

Features

  • sql table creation based on the Q_PROPERTY macro
  • relational tables can be generated based on getRelations() method (/* hash.insert("addresses", CuteEntityManager::Relation("addresses",RelationType::MANYTOMANY)) */ -> creates table "person_addresses"
  • eager data fetch
  • CRUD operations with simple method calls (e.g. entitymanager->create(sharedPtr);)
  • query api (object-oriented method for building SQL queries)
  • Object-Relational Mapping (ORM)
  • Multiple instances (- every Database Entity must inherit from CuteEntityManager::Entity)

Updated daily doxygen documentation: http://jenkins.danfai.de/jenkins/job/cuteentitymanager/doxygen/ Tutorial(wip): https://synlos.net/redmine/projects/entitymanager/wiki/Tutorial

Minimum requirements

  • GCC 4.8 or clang 3.3
  • >= Qt 5.4
  • any platform supported by Qt

German

Mit dem CuteEntityManager ist es möglich, Entities zu persistieren, zu mergen, zu finden und zu löschen. Die Funktionalität ist dem EntityManager der JPA nachempfunden. Für eine andere Anwendung war ich auf der Suche nach einem leicht zu benutzenden ORM. Entweder enthielten die jeweiligen Librarys zusätzliche Abhängigkeiten, hatten nicht den gewünschten Funktionsumfang, waren in der Benutzung zu "kompliziert"(imho) oder an bestimmte Plattformen gekoppelt.

Der CuteEntityManager unterstützt grundsätzlich alle von Qt unterstützten Plattformen. Da ich hauptberuflich Java & PHP Entwickler bin, ist der CuteEntityManager dem o.g. EntityManager der JPA und zum Teil dem PHP Yii Framework nachempfunden.

Der CuteEntityManager basiert ausschließlich auf Qt/C++ Techniken. Die Properties für das ORM werden anhand von QPROPERTY Makros festgelegt. Es ist möglich Vererbung zu nutzen. Relationen (ONETOONE, MANYTOONE, ONETOMANY und MANYTO_MANY) sind natürlich auch möglich. Um SELECT Statements zu vereinfachen, gibt es eine Query API. Man kann also ohne ein Stückchen SQL eine komplette Anwendung mit SQL-Datenbank Anbindung implementieren. Man sollte sich natürlich über die "Besonderheiten" einer relationalen Datenbank im Klaren sein (insbesondere eben bei Relationen). Aktuell ist nur die SQLite Unterstützung einigermaßen getestet. Erweiterungen für MySQL/PGSQL/MSSQL sollten relativ problemlos möglich sein.

Der CuteEntityManager ist sicherlich weit davon entfernt, in einem guten (getesteten) bzw. fertigen Zustand zu sein, da er aber für die Entwicklung einer anderen Anwendung genutzt wird, wird sich der Zustand sicherlich fortlaufend verbessern. Kritik, Lob, Verbesserungsvorschläge, Pull Requests, Code Reviews sind jederzeit willkommen. Man kann mich auf direktem Wege per Mail an c.ehringfeld[at]t-online.de erreichen.

Auch abrufbar als: Atom