⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ws-j2x-4-12.html

📁 javascript流程设计器,主要可以实现拖拽图形
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td><font size="-1" face="Verdana, sans-serif"><a href="http://www.ibm.com/">IBM</a> : <a href="/developerWorks/cn/index.shtml">developerWorks 中国网站</a> : <a href="/developerWorks/cn/xml/index.shtml">xml</a> : <a href="/developerWorks/cn/cnedu.nsf/xml-onlinecourse-bytitle">教学 - 在线教程</a></font>
<br>
<img alt="用 XDoclet 来改进 J2EE 组件的重用" src="imagemaster/masthead.jpg"></td><td width="*" valign="bottom" align="right"><a border="0" href="ws-j2x.zip"><img alt="下载 ZIP 文件" border="0" src="../i/icon-zip.gif"></a><a target="_blank" href="../tutorial_eng/index.html" border="0"><img alt="英文原文" border="0" src="../i/icon-source.gif"></a>
					
					
					
&nbsp;&nbsp;&nbsp;
				</td>
</tr>
<tr>
<td height="2" colspan="2"><img height="2" width="1" src="../i/c.gif"></td>
</tr>
</table>
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
<TR>
<TD width="150" height="1" bgcolor="#000000" colspan="6"><IMG alt="" height="1" width="150" src="../i/c.gif"></TD>
</TR>
<TR>
<TD background="../i/sw-gold.gif"><a border="0" href="index.html" onMouseOver="iOver('topmain'); iOver('bottommain'); self.status=mainblurb; return true;" onMouseOut="iOut('topmain'); iOut('bottommain'); self.status=''; return true;"><img alt="主菜单" border="0" src="../i/main.gif" name="topmain"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topsection'); iOver('bottomsection'); self.status=sectionblurb; return true;" onMouseOut="iOut('topsection'); iOut('bottomsection'); self.status=''; return true;" href="index4.html"><img alt="章节菜单" border="0" src="../i/section.gif" name="topsection"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topfeedback'); iOver('bottomfeedback'); self.status=feedbackblurb; return true;" onMouseOut="iOut('topfeedback'); iOut('bottomfeedback'); self.status=''; return true;" href="ws-j2x-6-3.html"><img alt="给出此教程的反馈意见" border="0" src="../i/feedback.gif" name="topfeedback"></a></TD><TD width="100%" background="../i/sw-gold.gif"><img src="../i/c.gif"></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topprevious'); iOver('bottomprevious'); self.status=previousblurb; return true;" onMouseOut="iOut('topprevious'); iOut('bottomprevious'); self.status=''; return true;" href="ws-j2x-4-11.html"><img alt="上页" border="0" src="../i/previous.gif" name="topprevious"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topnext'); iOver('bottomnext'); self.status=nextblurb; return true;" onMouseOut="iOut('topnext'); iOut('bottomnext'); self.status=''; return true;" href="ws-j2x-4-13.html"><img alt="下页" border="0" src="../i/next.gif" name="topnext"></a></TD>
</TR>
</TABLE>
<table bgcolor="ffffff" cellspacing="0" cellpadding="2" border="0" height="400" width="100%">
<tr valign="bottom">
<a name="navskip"></a><td height="25" colspan="4"><img alt="4.循序渐进的 EJB 技术示例" src="imagemaster/titlebar4.jpg" border="0" height="25" width="562"></td>
</tr>
<tr>
<td bgcolor="ffffff" width="15">&nbsp;</td><td bgcolor="ffffff" width="12">&nbsp;</td><td valign="top" align="left" bgcolor="ffffff" width="*">
<p>
<br>
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td width="90%"><font size="4" face="Verdana, Arial, Helvetica"><b>XDoclet 和 EJB 技术:ejb.relation 标记</b></font></td><td width="200" align="right"><font size="1" face="Verdana, Arial, Helvetica"><nobr>   第 12 页(共16 页)</nobr></font></td>
</tr>
</table>
<br>
<br>
</p>
<font size="2" face="Verdana, Arial, Helvetica">
<p>

<code>ejb.relation</code> 标记使您能够定义 CMR 关系。这个标记相当简单,因为属性名非常接近地匹配 EJB 部署描述符中的相应的元素名。</p>
<p>以下示例设置了一(<code>DeptBean</code>)对多(<code>EmployeeBean</code>)的关系。
       <pre>
<code style="font-family: Courier New, Courier, monospace; font-size: 12">
 ...
 public abstract class DeptBean implements EntityBean {
     
     ...
     
     
       /**
         * @return return employees in this department
         *
         * @ejb.interface-method view-type="local"
         *
         * @ejb.transaction type="Required"
         *
         * @ejb.relation
         *    name="EmployeesInADepartmentRelation"
         *    role-name="DeptHasEmployees"
         *    target-role-name="EmployeeInADept"
         *    target-cascade-delete="no"
         */            
     public abstract Collection getEmployees();
         /** @ejb.interface-method view-type="local" */
     public abstract void setEmployees(Collection collection);    
     
     ...
     </code>
</pre>
					
</p>
<p>
请注意,该关系被命名。然后您描述该关系中 DeptBean 的角色。您还可以用 <code>target-cascade-delete</code> 属性来指定在删除这个 bean 的实例的时候也删除该关系中它的所有的子元素。请注意,您还指定 target-role-name。实际上以 target 开头的属性仅适用于单向关系。由于这个示例是双向的,您可以不包括它。关系的多重性是基于 cmr 字段中 getter 方法的返回类型。因为 <code>getEmployees</code> 返回 Collection,所以 XDoclet 推断 <code>Employee</code> 有较大的多重性。</p>
<p>
无论薄煎饼是多么地平,它总有两面,这类似于 CMR 关系。以下是 CMR 关系的另一面。</p>
<p>
						
<pre>
<code style="font-family: Courier New, Courier, monospace; font-size: 12">
 public abstract class EmployeeBean implements EntityBean {
 
       ...
 
     /**
     * @return Return the group this user is in.
     *
     * @ejb.interface-method view-type="local"
     *
     * @ejb.transaction type="Required"
     *
     * @ejb.relation
     *    name="EmployeesInADeptartmentRelation"
     *    role-name="EmployeeInADept"
     *    target-role-name="DeptHasEmployees"
     *
     */
     public abstract Dept getDept();
     /** @ejb.interface-method view-type="local" */
     public abstract void setDept(Dept dept);
 
 
     </code>
</pre>
					
</p>
<p>
同样,目标属性是一点多余的信息,实际上这点信息仅适用于单向关系,但是它在这里是附加的。请注意,关系名与关系的 Dept 一侧的关系名相同。这被 XDoclet 用来使关系的两个成员相关。</p>
<p>以上 ejb.relation 标记将生成部署描述符中的以下条目。</p>
<p>
						
<pre>
<code style="font-family: Courier New, Courier, monospace; font-size: 12">
    &lt;!-- Relationships --&gt;
    &lt;relationships &gt;
       &lt;ejb-relation &gt;
          &lt;ejb-relation-name&gt;EmployeesInADeptartmentRelation&lt;/ejb-relation-name&gt;
 
          &lt;ejb-relationship-role &gt;
             &lt;ejb-relationship-role-name&gt;EmployeeInADept&lt;/ejb-relationship-role-name&gt;
             &lt;multiplicity&gt;Many&lt;/multiplicity&gt;
             &lt;relationship-role-source &gt;
                &lt;ejb-name&gt;EmployeeBean&lt;/ejb-name&gt;
             &lt;/relationship-role-source&gt;
             &lt;cmr-field &gt;
                &lt;cmr-field-name&gt;dept&lt;/cmr-field-name&gt;
             &lt;/cmr-field&gt;
          &lt;/ejb-relationship-role&gt;
 
          &lt;ejb-relationship-role &gt;
             &lt;ejb-relationship-role-name&gt;DeptHasEmployees&lt;/ejb-relationship-role-name&gt;
             &lt;multiplicity&gt;One&lt;/multiplicity&gt;
             &lt;relationship-role-source &gt;
                &lt;ejb-name&gt;DeptBean&lt;/ejb-name&gt;
             &lt;/relationship-role-source&gt;
             &lt;cmr-field &gt;
                &lt;cmr-field-name&gt;employees&lt;/cmr-field-name&gt;
                &lt;cmr-field-type&gt;java.util.Collection&lt;/cmr-field-type&gt;
             &lt;/cmr-field&gt;
          &lt;/ejb-relationship-role&gt;
 
       &lt;/ejb-relation&gt;
    &lt;/relationships&gt;
  
     </code>
</pre>
					
</p>
<p>
使用 XDoclet 时,您必须为关系的每一侧编写一个带有两个属性的标记。请比较这个和您不使用 XDoclet 而必须编写的 26 行 XML。我不明白为什么有人不想把 XDoclet 用于 EJB 开发。</p>
<p>
 

		  
</p>
<br>
</font></td>
</tr>
</table>
<TABLE border="0" cellpadding="0" cellspacing="0" width="100%">
<TR>
<TD background="../i/sw-gold.gif"><a border="0" href="index.html" onMouseOver="iOver('topmain'); iOver('bottommain'); self.status=mainblurb; return true;" onMouseOut="iOut('topmain'); iOut('bottommain'); self.status=''; return true;"><img alt="主菜单" border="0" src="../i/main.gif" name="bottommain"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topsection'); iOver('bottomsection'); self.status=sectionblurb; return true;" onMouseOut="iOut('topsection'); iOut('bottomsection'); self.status=''; return true;" href="index4.html"><img alt="章节菜单" border="0" src="../i/section.gif" name="bottomsection"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topfeedback'); iOver('bottomfeedback'); self.status=feedbackblurb; return true;" onMouseOut="iOut('topfeedback'); iOut('bottomfeedback'); self.status=''; return true;" href="ws-j2x-6-3.html"><img alt="给出此教程的反馈意见" border="0" src="../i/feedback.gif" name="bottomfeedback"></a></TD><TD width="100%" background="../i/sw-gold.gif"><img src="../i/c.gif"></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topprevious'); iOver('bottomprevious'); self.status=previousblurb; return true;" onMouseOut="iOut('topprevious'); iOut('bottomprevious'); self.status=''; return true;" href="ws-j2x-4-11.html"><img alt="上页" border="0" src="../i/previous.gif" name="bottomprevious"></a></TD><TD background="../i/sw-gold.gif"><a border="0" onMouseOver="iOver('topnext'); iOver('bottomnext'); self.status=nextblurb; return true;" onMouseOut="iOut('topnext'); iOut('bottomnext'); self.status=''; return true;" href="ws-j2x-4-13.html"><img alt="下页" border="0" src="../i/next.gif" name="bottomnext"></a></TD>
</TR>
<TR>
<TD width="150" height="1" bgcolor="#000000" colspan="6"><IMG alt="" height="1" width="150" src="../i/c.gif"></TD>
</TR>
</TABLE>
<TABLE width="100%" cellpadding="0" cellspacing="0" border="0">
<TR>
<TD width="100%">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td><img alt="" height="1" width="1" src="../i/c.gif"></td>
</tr>
<tr valign="top">
<td class="bbg" height="21"> <a class="mainlink" href="/developerWorks/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/index.shtml">关于 IBM</a><span class="divider"> | </span><a class="mainlink" href="/developerWorks/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/privacy/index.shtml">隐私条约</a><span class="divider"> | </span><a class="mainlink" href="/developerWorks/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/legal/index.shtml">法律条款</a><span class="divider"> | </span><a class="mainlink" href="/developerWorks/cgi-bin/click.cgi?url=http://www-900.ibm.com/cn/ibm/contact/index.shtml">联系 IBM</a></td>
</tr>
</table>
</TD>
</TR>
</TABLE>
<script src="//www.ibm.com/common/stats/stats.js" language="JavaScript1.2" type="text/javascript"></script>
<noscript>
<img border="0" alt="" height="1" width="1" src="//stats.www.ibm.com/rc/images/uc.GIF?R=noscript"></noscript>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -