It looks like SQLObject has versioning now.
"So, a version is a special attribute that catches updates and stores older values in a special additional table."
This is a very useful thing that I've been using on some projects myself. With it you can more easily recover from errors, and it also can allow your users to search through changes.
If SQL had versioning built in, it'd be much nicer. Temporal SQL is the name for this. However I think Oracle is the only major database to support it. No free ones do. So storing it in another table is an ok compromise.
I'm looking forward to the next SQLObject release - with versioning support, and other goodies.