SDO provides an important feature called the ChangeSummary. Using this feature, a graph of related DataObjects can track changes made to iteself. These changes include additions to the graph, deletions, DataObject property (attribute) changes and even changes to object relationships.

The RDB DAS leverages the SDO ChangeSummary to drive graph chages to a database. Here is a simple example:

DASImpl* das = (DASImpl*) DASImpl::getFactory().createDAS(getConnection());
CommandPtr select = das->createCommand("Select * from CUSTOMER where ID = 1");
DataObjectPtr root = select->executeQuery();

DataObjectPtr customer = root->getDataObject("CUSTOMER[1]");
customer->setCString("LASTNAME", "Pavick");

The first half of this example creates a new read command and executes it. The result is a graph of DataObjects (in this case just one) represented by the containing "root".

The second half of the example makes modification to a single object in the graph and then calls the applyChanges() method. As part of the applyChanges processing, the das will scan the SDO ChangeSummary and notice the modified DataObject. It will then generate the UPDATE statement required to reflect the change to the database:


Notice that only a single column is updated rahther than all columns. This is because the SDO ChangeSummary has enough fidelity to track changes on a property-by-property bases and the das has the ability to generate partial updates.

  • No labels