You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ws.apache.org by Apache Wiki <wi...@apache.org> on 2006/10/12 05:13:30 UTC

[Ws Wiki] Update of "GeneratedDatabaseKeys" by KevinWilliams

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: general-unsubscribe@ws.apache.org
For additional commands, e-mail: general-help@ws.apache.org