1. A method for accessing a data store, the method comprising: instantiating, with one or more processors associated with one or more computer systems, an entity object based on an entity class definition, the entity object including a plurality of attributes defined by the entity class definition, the plurality of attributes including a superset of all attributes of a set of underlying object types allowed to mutate from one class to another, the plurality of attributes further including a discriminator attribute having a value, the value determining which type of the underlying object types the entity object should behave as; setting, with the one or more processors associated with the one or more computer systems, a value for the discriminator attribute based on an object type that the entity object should behave as; retrieving, with the one or more processors associated with the one or more computer systems, an instance of a helper object for the object type that the entity should behave as, the instance of the helper object determined by the value of the discriminator attribute; passing, with the one or more processors associated with the one or more computer systems, the entity object to the helper object such that the helper object is allowed to access one or more attributes of the entity object; and invoking at least one method of the helper object to store values for the one or more attributes of the entity object into the data store.