Features ~~~~~~~~ - Easy to use - No configuration necessary. - Small library size. - Supports PostgreSQL, MySQL, Oracle, HSQLDB - Own straight-forward, simple query language - Supports transactions - Supports polymorphism (selecting for superclass will return all subclasses too) - Can save any bean (does not use Serializable/Externalizable stuff) - Transparent handling of references to other beans - Can handle circular-, or self-references - Can save Lists and Maps - View selects - All queries are now transactions safe, no matter what you do, result lists stay the same. - Distributed, scalable operation. - Dynamic object (classes and attributes) Wishlist/TODO ~~~~~~~~~~~~~ - Support H2DB, DB2. - Support for all primitive array types - Support for primitive values inside lists (wrappers?) - Transaction and connection leak detection - Make history retention configurable! (up to seconds) - Performance/monitoring with a separate client (pretty graphs and such) - Performance enhancements: - Implement List indexOf() as a single select, not as iteration - Implement List remove(obj) without indexOf(), just remember the persistence_id, and based on that, one can compute the index of any real object. - Do not create all indexes, just those, which were referred to in selects - Remember, if a table has no modifications (only new rows, like a log table), and do not generate time controls to those tables. - Remove persistence_ids table, and make the classname part of the key, this way, persistence_ids will not have to be joined to each query, and each table can have it's own ids. - Make new TX_EMBEDDED transaction which sees the parents modifictations just commits separately - Schema evolution help (for example: give the value of a new attribute, then set this for all versions of objects). Abstract versions from migration scripts, automatically adapt changes (somehow) to all versions of objects. - Max and min memory of cache configurable - Scripts: data snapshot - Aggregate functions (sum, count, etc.) - Subselects - CrystalReport / OpenReport / JaperReposts integration - Allow for similar attributes in classes, and select those separately, or name those attribute while selecting!