1. A computer-implemented method of persisting an instance of a data object, the method comprising: performing an operation on an instance of a data object; identifying for the instance, at run-time, one of several persistence models that are available for the data object using the performed operation by determining an expectation of required functionality for the instance, each of the several persistence models defining how the data object is to be persisted in a database; and storing the instance in the database according to the identified persistence model.