CMP vs. BMP
The example shown in this article allows the ObjectSpaces framework to handle the persistence to the data source in the same way that container-managed persistence does so for entity beans. However, when the data is more complex or comes from heterogeneous sources, you can opt to perform the persistence yourself in the same way as bean-managed persistence allows in EJB.
This is accomplished by creating a class derived from the ObjectCustomizer abstract class and implementing methods such as CreateRow, GetRow, GetRows, InsertRows, UpdateRows, DeleteRows, GetChildRows, and GetParentRow. The class is then referenced in the type element of the mapping file so that the framework can instantiate it and call its methods when appropriate. As you can imagine, these methods are basically more granular versions of the ejbLoad, ejbStore, ejbRemove, and ejbCreate methods of the EntityBean interface.