Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Ws Wiki" for change 
notification.

The following page has been changed by KevinWilliams:
http://wiki.apache.org/ws/GeneratedDatabaseKeys

New page:
The RDB DAS provides the ability to work with 
[http://en.wikipedia.org/wiki/Surrogate_key database generated keys].  A piece 
of configuration information , typically via a configuration XML file, is used 
to indicate to the DAS that a column value is generated by the database.  This 
piece of information is necessary when new rows are inserted to the database 
since the DAS will generate an INSERT statement that does not include the 
generated column.

The follwing example illustrates the use of generated keys with the DAS:

{{{
   DAS das = DAS.FACTORY.createDAS(getConfig("CompanyConfig.xml"), 
getConnection());
   Command select = das.getCommand("all companies");
   DataObject root = select.executeQuery();

   // Create a new Company
   DataObject company = root.createDataObject("COMPANY");
   //Initialize properties of the new company
   company.setString("NAME", "Do-rite Pest Control");

   // Flush changes      
   das.applyChanges(root);

   // Inspect the id
   Integer id = (Integer) company.get("ID");
}}}

The first line creates a DAS instance form the factory passing it a stream over 
the file "!CompanyConfig.xml".  Here are the contents of that file:

{{{
   <Config 
xsi:noNamespaceSchemaLocation="http:///org.apache.tuscany.das.rdb/config.xsd"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
    
      <Command name="all companies" SQL="select * from COMPANY" kind="Select"/>

      <Table tableName="COMPANY">
        <Column columnName="ID" primaryKey="true" generated="true"/>
      </Table>
        
   </Config>
}}}

Note that only the 'ID' column is specified in the file since this is the only 
column we need to attach any information to.  Notice also that when the new 
Company instance in created, no value is assigned to the 'ID' property since 
this value will be supplied by the database when the insert operation is 
performed.

As part of the "apply changes" processing, the DAS will propogate the 
database-supplied key values back to the respective !DataObjects in the graph. 
The purpose of this is to make the values available to the application if 
needed.

This simple example only demosntrates the insertion of a flat graph of data 
since the graph consists only of Company instances.  But, the DAS is capable of 
more complex scenarios.  The DAS can also handle graphs of related !DataObjects 
each with generated columns.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to