summaryrefslogtreecommitdiffstats
path: root/site/trunk/site-publish/foreignkeyrepresentationandmanagement.html
diff options
context:
space:
mode:
Diffstat (limited to 'site/trunk/site-publish/foreignkeyrepresentationandmanagement.html')
-rw-r--r--site/trunk/site-publish/foreignkeyrepresentationandmanagement.html122
1 files changed, 122 insertions, 0 deletions
diff --git a/site/trunk/site-publish/foreignkeyrepresentationandmanagement.html b/site/trunk/site-publish/foreignkeyrepresentationandmanagement.html
new file mode 100644
index 0000000000..7283ae5e44
--- /dev/null
+++ b/site/trunk/site-publish/foreignkeyrepresentationandmanagement.html
@@ -0,0 +1,122 @@
+
+<!--
+
+ 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 : ForeignKeyRepresentationAndManagement</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=52823">
+ <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="ForeignKeyRepresentationAndManagement">ForeignKeyRepresentationAndManagement</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="ForeignKeyRepresentationAndManagement-ForeignKeyRepresentationAndManagement"></A>ForeignKeyRepresentationAndManagement</H1>
+
+<P>Database table foreign keys map to DataObjects as relationships to other DataObjects. Consider two tables: DEPARTMENT and EMPLOYEE and assume the EMPLOYEE table has a FK column DEPT_ID that references a row in the DEPARTEMENT table.</P>
+
+<P>If you use the DAS to read a particular department and all of its related employees then you will end up with a DEPARTMENT DataObject that has a property named &quot;EMPLOYEE&quot; that is a reference to a list of related EMPLOYEE DataObjects. You can navigate directly to the employees via this property like this: department.getList(&quot;EMPLOYEE&quot;).</P>
+
+<P>Although the relationship is mapped to the DataObjects as a relationship, the FK value is also stored in the repsective DataObject. So, continuing with this example, the EMPLOYEE DataObject will have a simple property named &quot;DEPT_ID&quot; that holds the value of the FK. This property is not maintained after the read. So, if an EMPLOYEE DataObject is moved to a different department, the FK property in EMPLOYEE will not be modified. Although most applications will ignore this FK property, there are a few scenarios that make use of it. In fact, although the preferred method of modifying relationships between DataObjects in a data graph is to use normal POJO manipulation, the DAS does allow the modification of a relationship via direct modification of the FK value.</P>
+
+<P>When the DAS is scanning changes made to a data graph, it employs the following set of rule to guide the generation of update statements:</P>
+
+<P>&quot;The value for a foreign key column will come from either the primary key of the parent dataobject or from the FK property itself. If the relationship is set but the FK property is not, the value will be taken from the parent's primary key. If the FK property is set but the relationship is not, the value will be taken from the property value. If both the relationship and the FK property are set, an exception will be thrown stating that &quot;Foreign key properties should not be set when the corresponding relationship has changed&quot; </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>