Features ~~~~~~~~ - Easy to use - No configuration nescessary. - Small library size. - Supports PostgreSQL - Supports MySQL - Supports Oracle - 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 Wishlist/TODO ~~~~~~~~~~~~~ - Somehow watch out in lazy-lists if the underlying tables alter, because then the list becomes unusable (it may present duplicate entries, etc.) - Index handling (currently this is non existent) - Performance enhancements: - Inside a transaction a LazyList should be guaranteed to be unaffected by other transactions - Inside a transaction a LazyList should use JDBC 2 scrolling to be effective - Inside a transaction a LazyList size should be computed using JDBC 2 scrolling - Outside a transaction the LazyList should fall back to limit/offset queries. - Inside a transaction updates should be batched together, and executed on commit only, or earlier if there was a query for given modifications which forces the updates to execute. - Caches (query cache, object cache?, query generation cache?) - Locking: Maybe the library should support locking, serizalizable and read-only, etc. object locking. - Internal: Export type handling (maps and lists) to specific type handlers. These will also handle query language constructs, and marshalling/unmarshalling. This will make type handling extensible. Design considerations (note to self) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - No configuration XMLs. If it is really-really needed, and no way around it, no defaults to use... Think harder, and find a way! - Full abstraction from database layer - Simple beans will be used, no interfaces or methods nescessary, similar to in-memory-management - Query language will be based on objects, for example object.name = 'ni', or object['ni']=foobar (last indicating hashmap handling) - Non-transient accessible properties will all be saved, maps as well as lists, and custom beans.