Patent ID: 7702686

Claim:
A system that facilitates object relational mapping, the system comprising: one or more processors; memory; a database embodied on a computer-readable storage medium, the database including a first table and a second table, the first table configured to store data that represents entities of a first entity type, the second table configured to store data that represents entities of a second entity type, the first table configured to store a primary key for each entity of the first entity type, the second table configured to store a primary key for each entity of the second entity type, the second table configured to store a foreign key for each entity of the second entity type, each foreign key being bound to a primary key in the first table as part of a database constraint; computer-executable instructions embodied on a computer-readable storage medium that when executed on the one or more processors performs a consistent navigation method that facilitates bi-directional relationship between the memory and the database, the method including: retrieving first data from the first table of the database, the first data representing a first entity of the first entity type, the first data including a primary key that uniquely identifies the first entity; retrieving second data from the second table of the database, the second data representing a plurality of entities of the second entity type, the second data including a foreign key that corresponds to the primary key of the first data; implementing, in the memory, a set data object, the set data object encapsulating a portion of the first data that corresponds to the first entity of the first entity type; implementing, in the memory, a plurality of entity data objects, each of the plurality of entity data objects encapsulating a portion of the second data that corresponds to one of the plurality of entities of the second entity type; in response to the second data including the foreign key that corresponds to the primary key of the first data, encapsulating, within each entity data object, a pointer to the set data object in the memory; in response to the second data including the foreign key that corresponds to the primary key of the first data, encapsulating, within the set data object, at least one pointer to the entity data objects; a tracking component that detects a change to the set data object and creates a copy of a set data object's state prior to the change when the set data object's state has not been copied previously; and wherein the set data object and the plurality of entity data objects provide object graph fidelity between an object loaded into the memory and a persistent representation of the object in a database side via constraints on collections of persistent objects, the constraints including at least preventing updates on the collection of persistent objects when the collection fails to completely load into memory.