Hey,
Thanks for the encouraging words! About the DAO interface: The reason it is so simple now is that I couldn't think of a more complex approach that would be general enough to be really useful. I had some ideas, but they all ended up locking the library user into a certain way of working with databases, and I didn't want to do that. If you (or anyone on this list) knows of some library (lisp or otherwise) that manages to abstract DAOs in an elegant way, let me know. Also, if you have some proposal for a change or addition to the library, send it to this list. The current interface is by no means set in stone -- though I try not to introduce incompatible changes too often ;).
While we are at the subject: One thing that is missing from the DAOs is that you can not retrieve one, update its primary key, and then store the changes -- it will be saved as a new record, instead of updating the old one. One way around this would be to have a hidden field in every DAO object, and to store their primary keys (as a list) in there when they are retrieved from the database. But this feels a bit clunky, so any suggestions are welcome.
Cheers, Marijn