summaryrefslogtreecommitdiffstats
path: root/site/trunk/site-publish/workingwithstaticdataobjects.html
blob: 1604f0e28740eed017e48a3d4b88a96d76bbbc68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
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>