Features ~~~~~~~~ - Easy to use - Small library size (below 100K) - 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 ~~~~~~~~~~~~~ - Make id accessible in object, if there is an attribute named persistenceId - Somehow watch out in lazy-lists if the underlying tables alter, because then the list becomes unusable (it may present duplicate entries, etc.) - MSSQL support - 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?) - 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) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 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.