I like the idea of seperating object persistence from object programming. Have you considered using attributes to define the object / database mapping in a similar way to XML serialization?