1. A computer-implemented method comprising: obtaining a schema describing a data class; generating code for use in a multi-tier run-time environment automatically from the schema, the multi-tier run-time environment including a client tier and an application tier, the generated code including a client class for the client tier and a server class for the application tier; bringing the generated code into a run-time environment having a set of framework components, the components including the client tier, the application tier, and a database tier; initiating a transaction in the client tier, the transaction including a change to be applied to a first data object, the first data object being an object of the client class cached by the client tier, the first data object representing a datum; creating in the client tier a change object representing the change to be applied; communicating the change object from the client tier to the application tier; in the application tier, applying the change represented by the change object thus communicated to a second data object, the second data object being an object of the server class cached by the application tier, the second data object representing said datum represented by the first data object; in the application tier, converting the second data object with the change thus applied into a representation suitable for use by the database tier; communicating the representation from the application tier to the database tier; in a manner responsive to the representation thus communicated, changing a database entry in the database tier, the database entry including said datum represented by the first and second data objects; notifying the application tier that the database entry has been changed; notifying the client tier that the datum represented by the second data object has been changed; in the client tier, changing a value in a field of the first data object so as to reflect the changed datum; in the client tier, closing the transaction; and making the first data object with the field thus updated available for further use in the run-time environment.