It's not clear to which level objects retrieved via the various getter methods are actually initialized. Some methods return a fully initialized object (e. g. a DatasetData object with the list of ImageData loaded), some don't (e. g. only a flat DatasetData object with no images or annotations loaded). This should at least be stated cleary in the methods docs.
(See comment on “Could not roll back JDBC transaction”)