A generic mechanism to persist data objects into databases without a
fundamental dependence on the underlying data store is provided. Rather
than relying on the expertise of a programmer to know what the structure
of a database should look like, data types are defined and adorned by the
programmer with attributes that suggest what the corresponding data will
be used for, and without the programmer defining the structure of the
database that will be used to store the data. Thereafter, the database is
dynamically created to satisfy the needs suggested by the adorned
attributes. In particular, a number of different tables are created
according to the intended needs for accessing the data. By doing this an
optimized database can be created to provide the desired results without
requiring the programmer to have any specific knowledge regarding
databases and corresponding database schemas.