summaryrefslogtreecommitdiffstats
path: root/site/trunk/site-publish/workingwithstaticdataobjects.html
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--site/trunk/site-publish/workingwithstaticdataobjects.html169
1 files changed, 169 insertions, 0 deletions
diff --git a/site/trunk/site-publish/workingwithstaticdataobjects.html b/site/trunk/site-publish/workingwithstaticdataobjects.html
new file mode 100644
index 0000000000..1604f0e287
--- /dev/null
+++ b/site/trunk/site-publish/workingwithstaticdataobjects.html
@@ -0,0 +1,169 @@
+
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE- 2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+ <HEAD>
+ <!-- generateKeywords macro -->
+ <META name="description" content="Apache Tuscany">
+ <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource">
+ <!-- generateKeywords macro end -->
+
+ <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css">
+ <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANY/$images/favicon.ico">
+ <TITLE>Apache Tuscany : WorkingWithStaticDataObjects</TITLE>
+ <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
+
+ <BODY onload="init()">
+ <!-- topNav macro -->
+ <TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg">
+ <TR>
+ <TD valing="top" align="left">
+ <A href="https://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANY&title=$siteroot"><IMG src="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A>
+ </TD>
+ <TD>
+ <A href="http://tuscany.apache.org/"><IMG src="http://tuscany.apache.org/images/TuscanyLogo.jpg" border="0"></A>
+ </TD>
+
+ <TD width="100%">
+ &nbsp;
+ </TD>
+
+ <!-- Adds the edit page link to the top banner-->
+ <TD valign="bottom">
+ <DIV style="padding: 2px 10px; margin: 0px;">
+ <A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=52821">
+ <IMG src="http://tuscany.apache.org/images/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A>
+ </DIV>
+ </TD>
+
+ </TR>
+ </TABLE>
+ <!-- topNav macro end -->
+
+ <!-- breadCrumbs macro -->
+ <TABLE border="0" cellpadding="2" cellspacing="0" width="100%">
+ <TR class="topBar">
+ <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%">
+ &nbsp;<A href="home.html" title="Apache Tuscany">Apache Tuscany</A>&nbsp;&gt;&nbsp;<A href="home.html" title="Home">Home</A>&nbsp;&gt;&nbsp;<A href="das-overview.html" title="DAS Overview">DAS Overview</A>&nbsp;&gt;&nbsp;<A href="das-java.html" title="DAS Java">DAS Java</A>&nbsp;&gt;&nbsp;<A href="das-java-documentation-menu.html" title="DAS Java Documentation Menu">DAS Java Documentation Menu</A>&nbsp;&gt;&nbsp;<A href="das-java-developer-guide.html" title="DAS Java Developer Guide">DAS Java Developer Guide</A>&nbsp;&gt;&nbsp;<A href="rdb-das-java.html" title="RDB DAS Java">RDB DAS Java</A>&nbsp;&gt;&nbsp;<A href="rdb-das-user-guide.html" title="RDB DAS - User Guide">RDB DAS - User Guide</A>&nbsp;&gt;&nbsp;<A href="" title="WorkingWithStaticDataObjects">WorkingWithStaticDataObjects</A>
+ </TD>
+
+ <TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true">
+ <A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A>&nbsp;&nbsp;
+ </TD>
+ </TR>
+ </TABLE>
+ <!-- breadCrumbs macro end -->
+
+
+ <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF">
+ <TR>
+ <TD align="left" valign="top">
+
+ <!-- pageContent macro -->
+ <DIV id="PageContent">
+
+ <DIV class="pagecontent">
+ <DIV class="wiki-content">
+ <H1><A name="WorkingWithStaticDataObjects-WorkingWithStaticDataObjects%26nbsp%3B"></A>WorkingWithStaticDataObjects&nbsp;</H1>
+
+<P>Although the RDBDAS default behavior is to produce graphs of dynamic DataObjects (see <A href="resultsetdrivendataobjecttypes.html" title="ResultSetDrivenDataObjectTypes">ResultSetDrivenDataObjectTypes</A>), the DAS allows users to work with Static DataObjects as well.</P>
+
+<P>Clients can designate a set of Types by providing a piece of configuration (usually in the form of a configuration XML file) to the DAS and the DAS will then use these Types for the DataObject model.</P>
+
+<P>Without any name mapping configuration specified, the DAS will attempt to use DataObject Type and Property names equivalent to database Table and Column names. For example, if the database table name is &quot;BANK_EMPLOYEE&quot;, the DAS will attempt to create DataObject instances of type BANK_EMPLOYEE. If this Type doesn't exist in the provided Types, an exception will be thrown by SDO.</P>
+
+<P>To map these database tables and columns to your SDO types and properties, you can provide a &quot;Type Name&quot; and &quot;Property Name&quot; (see <A href="workingwithnamemapping.html" title="WorkingWithNameMapping">WorkingWithNameMapping</A>). In the above example, if we specify a Type name of &quot;employee&quot;, the DAS will attempt to create DataObject instances of type &quot;employee&quot; from the information in the BANK_EMPLOYEE table.</P>
+
+<P>It is not necessary to specify any sort of mapping between database column data types and your Property data types. If the data types do not match, a conversion will be made between the two when the property is set on the SDO model. The possible data type conversions are specified in the SDO specification. If there is no valid conversion available between the two data types, you can specify a Converter (see <A href="workingwithcolumnconverters.html" title="WorkingWithColumnConverters">WorkingWithColumnConverters</A>) that the DAS will use to convert the data before setting the value in the DataObject.</P>
+
+<P>The following example demostrates the RDB DAS wih Static SDO Types:</P>
+<DIV class="panel" style="border-width: 1px;"><DIV class="panelContent">
+<P> SDOUtil.registerStaticTypes(CustomerFactory.class);</P>
+
+<P> DAS das = DAS.FACTORY.createDAS(getConfig(&quot;staticCustomerOrder.xml&quot;), getConnection());<BR>
+ Command select = das.getCommand(&quot;Customer and Orders&quot;);<BR>
+ select.setParameter(1, Integer.valueOf(1));<BR>
+ DataObject root = select.executeQuery();</P>
+
+<P> // Modify a customer<BR>
+ Customer customer = (Customer) root.getDataObject(&quot;Customer[1]&quot;);<BR>
+ customer.setLastName(&quot;Pavick&quot;);</P>
+
+<P> // Modify an order<BR>
+ AnOrder order = (AnOrder) customer.getOrders().get(0);<BR>
+ order.setProduct(&quot;Kitchen Sink 001&quot;);</P>
+
+<P> // Flush changes<BR>
+ das.applyChanges((DataObject) root);</P>
+</DIV></DIV>
+<P>And, here is the associated config file:</P>
+<DIV class="preformatted panel" style="border-width: 1px;"><DIV class="preformattedContent panelContent">
+<PRE>&lt;Config xsi:noNamespaceSchemaLocation=&quot;http:///org.apache.tuscany.das.rdb/config.xsd&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
+ dataObjectModel=&quot;http:///org.apache.tuscany.das.rdb.test/customer.xsd&quot;&gt;
+
+ &lt;Command name=&quot;Customer and Orders&quot; SQL=&quot;SELECT * FROM CUSTOMER LEFT JOIN ANORDER ON CUSTOMER.ID = ANORDER.CUSTOMER_ID where CUSTOMER.ID = ?&quot; kind=&quot;Select&quot;/&gt;
+
+ &lt;Table tableName=&quot;CUSTOMER&quot; typeName=&quot;Customer&quot;&gt;
+ &lt;Column columnName=&quot;ID&quot; primaryKey=&quot;true&quot;/&gt;
+ &lt;/Table&gt;
+
+ &lt;Table tableName=&quot;ANORDER&quot; typeName=&quot;AnOrder&quot;&gt;
+ &lt;Column columnName=&quot;ID&quot; primaryKey=&quot;true&quot;/&gt;
+ &lt;Column columnName=&quot;CUSTOMER_ID&quot;/&gt;
+ &lt;/Table&gt;
+
+ &lt;Relationship name=&quot;orders&quot; primaryKeyTable=&quot;CUSTOMER&quot; foreignKeyTable=&quot;ANORDER&quot; many=&quot;true&quot;&gt;
+ &lt;KeyPair primaryKeyColumn=&quot;ID&quot; foreignKeyColumn=&quot;CUSTOMER_ID&quot;/&gt;
+ &lt;/Relationship&gt;
+
+ &lt;/Config&gt;
+</PRE>
+</DIV></DIV>
+<P>The first line of the example registers the Static model with the SDO runtime. This step would not normally be intermixed with the data access code but the Types must be registered by some part of the applicaiton. The DAS is provided with the URI or the static types via the config file via the dataObjectModel attribute.</P>
+
+<P>You can see that the sample makes use of the Types provided. </P>
+ </DIV>
+ </DIV>
+ </DIV>
+ <!-- pageContent macro end -->
+
+ </TD>
+ </TR>
+ </TABLE>
+
+ <!-- footer macro -->
+ <SCRIPT src="http://www.google-analytics.com/urchin.js" type="text/javascript">
+ </SCRIPT>
+ <SCRIPT type="text/javascript">
+ _uacct = "UA-1174707-5";
+ urchinTracker();
+ </SCRIPT>
+
+ <A href="http://www.statcounter.com/" target="_blank"><IMG src="http://c26.statcounter.com/counter.php?sc_project=2619156&java=0&security=94bd7e7d&invisible=0" alt="website stats" border="0"></A>
+
+ <DIV class="footer">
+ Copyright � 2003-2012, The Apache Software Foundation&nbsp;&nbsp;</BR>
+ Apache Tuscany and the Apache Tuscany project logo are trademarks of The Apache Software Foundation.
+ </DIV>
+ <!-- footer macro end -->
+
+ </BODY>
+</HTML>