Data Abstraction Guidelines:

* Modification of Data-Classes through the provided methods will always be reflected in the database.
* All mutable types returned by Data-Classes are copies. Modifying the copy will NOT result in any changes in the database.
* All changes of Data-Classes will lead to observer notifications.
* Iterating over a Data-Class is thread-safe: modifications of the Data-Class won't be affecting the iterator.
* Don't ever store any references of Data-Class instances as attributes or in static variables. Data-Class instances are subject to change and can be deleted at any time. Use the appropriate load method to obtain the Data-Class instance you require.
* All modifications of Data-Classes are synchronized but be aware of some other consequences:
 - Modifications of a user/other maintenance data should be done in ACID form. No other Notification should be processed before the user is completely modified. Otherwise User-Data-Race-Conditions might appear.
* The Iterator remove() method is not implemented. Use the corresponding delete() method instead.
* All attributes lacking a set()-Method cannot be changed.