diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2013-05-06 12:05:39 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2013-08-14 15:18:23 +0200 |
commit | 91830e3bd38a05c73d03a5dfb88997799d44274b (patch) | |
tree | 399f1fc61ce959ac63b8b7ebaf5e3c58f80d8a7d /odb/database.hxx | |
parent | 72b262ee4f375089256f6438152bd323df1ff5a3 (diff) |
Add support for object sections
Sections are an optimization mechanism that allows the partitioning of
data members of a persistent class into groups that can be separately
loaded and/or updated.
Diffstat (limited to 'odb/database.hxx')
-rw-r--r-- | odb/database.hxx | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/odb/database.hxx b/odb/database.hxx index 79fa622..6c70da7 100644 --- a/odb/database.hxx +++ b/odb/database.hxx @@ -83,6 +83,12 @@ namespace odb void load (const typename object_traits<T>::id_type& id, T& object); + // Load (or reload, if it is already loaded) a section of an object. + // + template <typename T> + void + load (T& object, section&); + // Reload an object. // template <typename T> @@ -153,6 +159,14 @@ namespace odb void update (const typename object_traits<T>::pointer_type& obj_ptr); + // Update a section of an object. Throws section_not_loaded exception + // if section is not loaded. Note also that this function does not + // clear the changed flag if it is set. + // + template <typename T> + void + update (const T& object, const section&); + // Make the object transient. Throw object_not_persistent if not // found. // @@ -394,6 +408,10 @@ namespace odb template <typename T, database_id DB> void + load_ (T&, section&); + + template <typename T, database_id DB> + void reload_ (T&); template <typename T, database_id DB> @@ -414,6 +432,10 @@ namespace odb template <typename T, database_id DB> void + update_ (const T&, const section&); + + template <typename T, database_id DB> + void erase_ (const typename object_traits<T>::id_type&); template <typename T, database_id DB> |