The talk introduces Wt::Dbo. It will be compared to existing ORM and database solutions for C++ and other programming languages. Based on simple examples, you will learn how you can use Wt::Dbo to manipulate objects that are stored in a database from within C++.
Wt::Dbo is a brand new C++ ORM layer. Similar to Hibernate for Java and ActiveRecords for Ruby, Wt::Dbo offers a convenient way to interact with objects which are serialized in a database.
Although the lack of introspection in C++ seems to be problematic to write a decent ORM in C++, Wt::Dbo demonstrates that appropriate use of the C++ template system offers a perfect alternative.
Currently, Wt:dbo contains the following functionality:
Automatic schema creation
Mapping of 1-N and M-N relations
Lazy loading of objects and collections
Uses prepared statements throughout
Basic query support
Automatic dirty checking and database synchronization
Built-in optimistic locking (using a version field)Transactional integrity, even when a transaction fails: dirty objects remain dirty and may later be saved in a new transaction, or may be reverted to their persisted state (unlike Hibernate where you are forced to discard the whole session)
Transaction write-behind for changes, with support for manual flushing
Forces use of surrogate keys
Does not depend on Wt (can be used independently) Simple backend system: at the moment only SQLite3. We are looking at how we can perhaps can leverage SOCI if it makes its way into Boost. |