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

📄 inheritance.html

📁 是一个中文的Hibernate库文档
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<html><head>      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">   <title>&#31532;&nbsp;10&nbsp;&#31456;&nbsp;&#32487;&#25215;&#26144;&#23556;(Inheritance Mappings)</title><link rel="stylesheet" href="../shared/css/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="HIBERNATE - &#31526;&#21512;Java&#20064;&#24815;&#30340;&#20851;&#31995;&#25968;&#25454;&#24211;&#25345;&#20037;&#21270;"><link rel="up" href="index.html" title="HIBERNATE - &#31526;&#21512;Java&#20064;&#24815;&#30340;&#20851;&#31995;&#25968;&#25454;&#24211;&#25345;&#20037;&#21270;"><link rel="previous" href="components.html" title="&#31532;&nbsp;9&nbsp;&#31456;&nbsp;&#32452;&#20214;&#65288;Component&#65289;&#26144;&#23556;"><link rel="next" href="objectstate.html" title="&#31532;&nbsp;11&nbsp;&#31456;&nbsp;&#19982;&#23545;&#35937;&#20849;&#20107;"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">&#31532;&nbsp;10&nbsp;&#31456;&nbsp;&#32487;&#25215;&#26144;&#23556;(Inheritance Mappings)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="components.html">&#19978;&#19968;&#39029;</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="objectstate.html">&#19979;&#19968;&#39029;</a></td></tr></table><hr></div><div class="chapter" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title"><a name="inheritance"></a>&#31532;&nbsp;10&nbsp;&#31456;&nbsp;&#32487;&#25215;&#26144;&#23556;(Inheritance Mappings)</h2></div></div><div></div></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="inheritance-strategies"></a>10.1.&nbsp; &#19977;&#31181;&#31574;&#30053;</h2></div></div><div></div></div><p>               	Hibernate&#25903;&#25345;&#19977;&#31181;&#22522;&#26412;&#30340;&#32487;&#25215;&#26144;&#23556;&#31574;&#30053;&#65306;            </p><div class="itemizedlist"><ul type="disc"><li><p>                &#27599;&#20010;&#31867;&#20998;&#23618;&#32467;&#26500;&#19968;&#24352;&#34920;(table per class hierarchy)            </p></li><li><p>                &#27599;&#20010;&#23376;&#31867;&#19968;&#24352;&#34920;(table per subclass)            </p></li><li><p>                &#27599;&#20010;&#20855;&#20307;&#31867;&#19968;&#24352;&#34920;(table per concrete class)            </p></li></ul></div><p>	            &#27492;&#22806;&#65292;Hibernate&#36824;&#25903;&#25345;&#31532;&#22235;&#31181;&#31245;&#26377;&#19981;&#21516;&#30340;&#22810;&#24577;&#26144;&#23556;&#31574;&#30053;&#65306;	        </p><div class="itemizedlist"><ul type="disc"><li><p>                &#38544;&#24335;&#22810;&#24577;(implicit polymorphism)            </p></li></ul></div><p>									&#23545;&#20110;&#21516;&#19968;&#20010;&#32487;&#25215;&#23618;&#27425;&#20869;&#30340;&#19981;&#21516;&#20998;&#25903;&#65292;&#21487;&#20197;&#37319;&#29992;&#19981;&#21516;&#30340;&#26144;&#23556;&#31574;&#30053;&#65292;&#28982;&#21518;&#29992;&#38544;&#24335;&#22810;									&#24577;&#26469;&#23436;&#25104;&#36328;&#36234;&#25972;&#20010;&#23618;&#27425;&#30340;&#22810;&#24577;&#12290;&#20294;&#26159;&#22312;&#21516;&#19968;&#20010;<tt class="literal">&lt;class&gt;</tt>&#26681;&#20803;&#32032;									&#19979;&#65292;Hibernate&#19981;&#25903;&#25345;&#28151;&#21512;&#20102;&#20803;&#32032;<tt class="literal">&lt;subclass&gt;</tt>&#12289;									<tt class="literal">&lt;joined-subclass&gt;</tt>&#21644;<tt class="literal">&lt;union-subclass&gt;</tt>									&#30340;&#26144;&#23556;&#12290;&#22312;&#21516;&#19968;&#20010;<tt class="literal">&lt;class&gt;</tt>&#20803;&#32032;&#19979;&#65292;&#21487;&#20197;&#28151;&#21512;&#20351;&#29992;									&#8220;&#27599;&#20010;&#31867;&#20998;&#23618;&#32467;&#26500;&#19968;&#24352;&#34920;&#8221;&#65288;table per hierarchy&#65289; &#21644;&#8220;&#27599;&#20010;&#23376;&#31867;&#19968;&#24352;&#34920;&#8221;&#65288;table per subclass&#65289;									&#36825;&#20004;&#31181;&#26144;&#23556;&#31574;&#30053;&#65292;&#36825;&#26159;&#36890;&#36807;&#32467;&#21512;&#20803;&#32032;<tt class="literal">&lt;subclass&gt;</tt>&#21644;									<tt class="literal">&lt;join&gt;</tt>&#26469;&#23454;&#29616;&#30340;&#65288;&#35265;&#21518;&#65289;&#12290;									            </p><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="inheritance-tableperclass"></a>10.1.1.&nbsp;&#27599;&#20010;&#31867;&#20998;&#23618;&#32467;&#26500;&#19968;&#24352;&#34920;(Table per class hierarchy)</h3></div></div><div></div></div><p>                &#20551;&#35774;&#25105;&#20204;&#26377;&#25509;&#21475;<tt class="literal">Payment</tt>&#21644;&#23427;&#30340;&#20960;&#20010;&#23454;&#29616;&#31867;&#65306;                <tt class="literal">CreditCardPayment</tt>, <tt class="literal">CashPayment</tt>,                 &#21644;<tt class="literal">ChequePayment</tt>&#12290;&#21017;&#8220;&#27599;&#20010;&#31867;&#20998;&#23618;&#32467;&#26500;&#19968;&#24352;&#34920;&#8221;(Table per                 class hierarchy)&#30340;&#26144;&#23556;&#20195;&#30721;&#22914;&#19979;&#25152;&#31034;&#65306;            </p><pre class="programlisting">&lt;class name="Payment" table="PAYMENT"&gt;    &lt;id name="id" type="long" column="PAYMENT_ID"&gt;        &lt;generator class="native"/&gt;    &lt;/id&gt;    &lt;discriminator column="PAYMENT_TYPE" type="string"/&gt;    &lt;property name="amount" column="AMOUNT"/&gt;    ...    &lt;subclass name="CreditCardPayment" discriminator-value="CREDIT"&gt;        &lt;property name="creditCardType" column="CCTYPE"/&gt;        ...    &lt;/subclass&gt;    &lt;subclass name="CashPayment" discriminator-value="CASH"&gt;        ...    &lt;/subclass&gt;    &lt;subclass name="ChequePayment" discriminator-value="CHEQUE"&gt;        ...    &lt;/subclass&gt;&lt;/class&gt;</pre><p>                &#37319;&#29992;&#36825;&#31181;&#31574;&#30053;&#21482;&#38656;&#35201;&#19968;&#24352;&#34920;&#21363;&#21487;&#12290;&#23427;&#26377;&#19968;&#20010;&#24456;&#22823;&#30340;&#38480;&#21046;&#65306;&#35201;&#27714;&#37027;&#20123;&#30001;&#23376;&#31867;&#23450;&#20041;&#30340;&#23383;&#27573;&#65292;                &#22914;<tt class="literal">CCTYPE</tt>&#65292;&#19981;&#33021;&#26377;<tt class="literal">&#38750;&#31354;(NOT NULL)</tt>&#32422;&#26463;&#12290;            </p></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="inheritance-tablepersubclass"></a>10.1.2.&nbsp;&#27599;&#20010;&#23376;&#31867;&#19968;&#24352;&#34920;(Table per subclass)</h3></div></div><div></div></div><p>                &#23545;&#20110;&#19978;&#20363;&#20013;&#30340;&#20960;&#20010;&#31867;&#32780;&#35328;&#65292;&#37319;&#29992;&#8220;&#27599;&#20010;&#23376;&#31867;&#19968;&#24352;&#34920;&#8221;&#30340;&#26144;&#23556;&#31574;&#30053;&#65292;&#20195;&#30721;&#22914;&#19979;&#25152;&#31034;&#65306;            </p><pre class="programlisting">&lt;class name="Payment" table="PAYMENT"&gt;    &lt;id name="id" type="long" column="PAYMENT_ID"&gt;        &lt;generator class="native"/&gt;    &lt;/id&gt;    &lt;property name="amount" column="AMOUNT"/&gt;    ...    &lt;joined-subclass name="CreditCardPayment" table="CREDIT_PAYMENT"&gt;        &lt;key column="PAYMENT_ID"/&gt;        ...    &lt;/joined-subclass&gt;    &lt;joined-subclass name="CashPayment" table="CASH_PAYMENT"&gt;        &lt;key column="PAYMENT_ID"/&gt;        &lt;property name="creditCardType" column="CCTYPE"/&gt;        ...    &lt;/joined-subclass&gt;    &lt;joined-subclass name="ChequePayment" table="CHEQUE_PAYMENT"&gt;        &lt;key column="PAYMENT_ID"/&gt;        ...    &lt;/joined-subclass&gt;&lt;/class&gt;</pre><p>                &#38656;&#35201;&#22235;&#24352;&#34920;&#12290;&#19977;&#20010;&#23376;&#31867;&#34920;&#36890;&#36807;&#20027;&#38190;&#20851;&#32852;&#21040;&#36229;&#31867;&#34920;(&#22240;&#32780;&#20851;&#31995;&#27169;&#22411;&#23454;&#38469;&#19978;&#26159;&#19968;&#23545;&#19968;&#20851;&#32852;)&#12290;            </p></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="inheritance-tablepersubclass-discriminator"></a>10.1.3.&nbsp;&#27599;&#20010;&#23376;&#31867;&#19968;&#24352;&#34920;(Table per subclass)&#65292;&#20351;&#29992;&#36776;&#21035;&#26631;&#24535;(Discriminator)</h3></div></div><div></div></div><p>                &#27880;&#24847;&#65292;&#23545;&#8220;&#27599;&#20010;&#23376;&#31867;&#19968;&#24352;&#34920;&#8221;&#30340;&#26144;&#23556;&#31574;&#30053;&#65292;Hibernate&#30340;&#23454;&#29616;&#19981;&#38656;&#35201;&#36776;&#21035;&#23383;&#27573;&#65292;&#32780;&#20854;&#20182;                &#30340;&#23545;&#35937;/&#20851;&#31995;&#26144;&#23556;&#24037;&#20855;&#20351;&#29992;&#20102;&#19968;&#31181;&#19981;&#21516;&#20110;Hibernate&#30340;&#23454;&#29616;&#26041;&#27861;&#65292;&#35813;&#26041;&#27861;&#35201;&#27714;&#22312;&#36229;&#31867;                &#34920;&#20013;&#26377;&#19968;&#20010;&#31867;&#22411;&#36776;&#21035;&#23383;&#27573;(type discriminator column)&#12290;Hibernate&#37319;&#29992;&#30340;&#26041;&#27861;&#26356;                &#38590;&#23454;&#29616;&#65292;&#20294;&#20174;&#20851;&#31995;&#65288;&#25968;&#25454;&#24211;&#65289;&#36825;&#28857;&#19978;&#26469;&#30475;&#65292;&#25353;&#29702;&#35828;&#23427;&#26356;&#27491;&#30830;&#12290;&#33509;&#20320;&#24895;&#24847;&#20351;&#29992;&#24102;&#26377;&#36776;&#21035;&#23383;                &#27573;&#30340;&#8220;&#27599;&#20010;&#23376;&#31867;&#19968;&#24352;&#34920;&#8221;&#30340;&#31574;&#30053;&#65292;&#20320;&#21487;&#20197;&#32467;&#21512;&#20351;&#29992;<tt class="literal">&lt;subclass&gt;</tt>                &#19982;<tt class="literal">&lt;join&gt;</tt>&#65292;&#22914;&#19979;&#25152;&#31034;&#65306;            </p><pre class="programlisting">&lt;class name="Payment" table="PAYMENT"&gt;    &lt;id name="id" type="long" column="PAYMENT_ID"&gt;        &lt;generator class="native"/&gt;    &lt;/id&gt;    &lt;discriminator column="PAYMENT_TYPE" type="string"/&gt;    &lt;property name="amount" column="AMOUNT"/&gt;    ...    &lt;subclass name="CreditCardPayment" discriminator-value="CREDIT"&gt;        &lt;join table="CREDIT_PAYMENT"&gt;            &lt;property name="creditCardType" column="CCTYPE"/&gt;            ...        &lt;/join&gt;    &lt;/subclass&gt;    &lt;subclass name="CashPayment" discriminator-value="CASH"&gt;        &lt;join table="CASH_PAYMENT"&gt;            ...        &lt;/join&gt;    &lt;/subclass&gt;    &lt;subclass name="ChequePayment" discriminator-value="CHEQUE"&gt;        &lt;join table="CHEQUE_PAYMENT" fetch="select"&gt;            ...        &lt;/join&gt;    &lt;/subclass&gt;&lt;/class&gt;</pre><p>                &#21487;&#36873;&#30340;&#22768;&#26126;<tt class="literal">fetch="select"</tt>&#65292;&#26159;&#29992;&#26469;&#21578;&#35785;Hibernate&#65292;&#22312;&#26597;&#35810;&#36229;&#31867;&#26102;&#65292;                &#19981;&#35201;&#20351;&#29992;&#22806;&#37096;&#36830;&#25509;(outer join)&#26469;&#25235;&#21462;&#23376;&#31867;<tt class="literal">ChequePayment</tt>&#30340;&#25968;&#25454;&#12290;            </p></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="inheritance-mixing-tableperclass-tablepersubclass"></a>10.1.4.&nbsp;&#28151;&#21512;&#20351;&#29992;&#8220;&#27599;&#20010;&#31867;&#20998;&#23618;&#32467;&#26500;&#19968;&#24352;&#34920;&#8221;&#21644;&#8220;&#27599;&#20010;&#23376;&#31867;&#19968;&#24352;&#34920;&#8221;</h3></div></div><div></div></div><p>                &#20320;&#29978;&#33267;&#21487;&#20197;&#37319;&#21462;&#22914;&#19979;&#26041;&#27861;&#28151;&#21644;&#20351;&#29992;&#8220;&#27599;&#20010;&#31867;&#20998;&#23618;&#32467;&#26500;&#19968;&#24352;&#34920;&#8221;&#21644;&#8220;&#27599;&#20010;&#23376;&#31867;&#19968;&#24352;&#34920;&#8221;&#36825;&#20004;&#31181;&#31574;&#30053;&#65306;            </p><pre class="programlisting">&lt;class name="Payment" table="PAYMENT"&gt;    &lt;id name="id" type="long" column="PAYMENT_ID"&gt;        &lt;generator class="native"/&gt;    &lt;/id&gt;    &lt;discriminator column="PAYMENT_TYPE" type="string"/&gt;    &lt;property name="amount" column="AMOUNT"/&gt;    ...    &lt;subclass name="CreditCardPayment" discriminator-value="CREDIT"&gt;        &lt;join table="CREDIT_PAYMENT"&gt;            &lt;property name="creditCardType" column="CCTYPE"/&gt;            ...        &lt;/join&gt;    &lt;/subclass&gt;    &lt;subclass name="CashPayment" discriminator-value="CASH"&gt;

⌨️ 快捷键说明

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