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

📄 events.html

📁 非常好的 Hibernate中文API ,供各位开发参考
💻 HTML
📖 第 1 页 / 共 2 页
字号:
        return false;    }    public void afterTransactionCompletion(Transaction tx) {        if ( tx.wasCommitted() ) {            System.out.println("Creations: " + creates + ", Updates: " + updates, "Loads: " + loads);        }        updates=0;        creates=0;        loads=0;    }}</pre><p>            &#25318;&#25130;&#22120;&#21487;&#20197;&#26377;&#20004;&#31181;:<tt class="literal">Session</tt>&#33539;&#22260;&#20869;&#30340;&#65292;&#21644;<tt class="literal">SessionFactory</tt>&#33539;&#22260;&#20869;&#30340;&#12290;        </p><p>		    &#24403;&#20351;&#29992;&#26576;&#20010;&#37325;&#36733;&#30340;SessionFactory.openSession()&#20351;&#29992;<tt class="literal">Interceptor</tt>&#20316;&#20026;&#21442;&#25968;&#35843;&#29992;&#25171;&#24320;&#19968;&#20010;session&#30340;&#26102;&#20505;&#65292;&#23601;&#25351;&#23450;&#20102;<tt class="literal">Session</tt>&#33539;&#22260;&#20869;&#30340;&#25318;&#25130;&#22120;&#12290;		            </p><pre class="programlisting">Session session = sf.openSession( new AuditInterceptor() );</pre><p>		    <tt class="literal">SessionFactory</tt>&#33539;&#22260;&#20869;&#30340;&#25318;&#25130;&#22120;&#35201;&#36890;&#36807;<tt class="literal">Configuration</tt>&#20013;&#27880;&#20876;&#65292;&#32780;&#36825;&#24517;&#39035;&#22312;&#21019;&#24314;<tt class="literal">SessionFactory</tt>&#20043;&#21069;&#12290;&#22312;&#36825;&#31181;&#24773;&#20917;&#19979;&#65292;&#32473;&#20986;&#30340;&#25318;&#25130;&#22120;&#20250;&#34987;&#36825;&#20010;<tt class="literal">SessionFactory</tt>&#25152;&#25171;&#24320;&#30340;&#25152;&#26377;session&#20351;&#29992;&#20102;&#65307;&#38500;&#38750;session&#25171;&#24320;&#26102;&#26126;&#30830;&#25351;&#26126;&#20102;&#20351;&#29992;&#30340;&#25318;&#25130;&#22120;&#12290;<tt class="literal">SessionFactory</tt>&#33539;&#22260;&#20869;&#30340;&#25318;&#25130;&#22120;&#65292;&#24517;&#39035;&#26159;&#32447;&#31243;&#23433;&#20840;&#30340;&#65292;&#22240;&#20026;&#22810;&#20010;session&#21487;&#33021;&#24182;&#21457;&#20351;&#29992;&#36825;&#20010;&#25318;&#25130;&#22120;&#65292;&#35201;&#22240;&#27492;&#23567;&#24515;&#19981;&#35201;&#20445;&#23384;&#19982;session&#30456;&#20851;&#30340;&#29366;&#24577;&#12290;        </p><pre class="programlisting">new Configuration().setInterceptor( new AuditInterceptor() );</pre></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="objectstate-events"></a>12.2.&nbsp;		&#20107;&#20214;&#31995;&#32479;(Event system)		</h2></div></div><div></div></div><p>		    &#22914;&#26524;&#38656;&#35201;&#21709;&#24212;&#25345;&#20037;&#23618;&#30340;&#26576;&#20123;&#29305;&#27530;&#20107;&#20214;&#65292;&#20320;&#20063;&#21487;&#20197;&#20351;&#29992;Hibernate3&#30340;&#20107;&#20214;&#26694;&#26550;&#12290;			&#35813;&#20107;&#20214;&#31995;&#32479;&#21487;&#20197;&#29992;&#26469;&#26367;&#20195;&#25318;&#25130;&#22120;&#65292;&#20063;&#21487;&#20197;&#20316;&#20026;&#25318;&#25130;&#22120;&#30340;&#34917;&#20805;&#26469;&#20351;&#29992;&#12290;		            </p><p>                    &#22522;&#26412;&#19978;&#65292;<tt class="literal">Session</tt>&#25509;&#21475;&#30340;&#27599;&#20010;&#26041;&#27861;&#37117;&#26377;&#30456;&#23545;&#24212;&#30340;&#20107;&#20214;&#12290;&#27604;&#22914;			<tt class="literal">LoadEvent</tt>&#65292;<tt class="literal">FlushEvent</tt>&#65292;&#31561;&#31561;&#65288;&#26597;&#38405;XML&#37197;&#32622;&#25991;&#20214;			&#30340;DTD&#65292;&#20197;&#21450;<tt class="literal">org.hibernate.event</tt>&#21253;&#26469;&#33719;&#24471;&#25152;&#26377;&#24050;&#23450;&#20041;&#30340;&#20107;&#20214;&#30340;&#21015;&#34920;&#65289;&#12290;&#24403;&#26576;&#20010;&#26041;			&#27861;&#34987;&#35843;&#29992;&#26102;&#65292;Hibernate <tt class="literal">Session</tt>&#20250;&#29983;&#25104;&#19968;&#20010;&#30456;&#23545;&#24212;&#30340;&#20107;&#20214;&#24182;&#28608;&#27963;&#25152;			&#26377;&#37197;&#32622;&#22909;&#30340;&#20107;&#20214;&#30417;&#21548;&#22120;&#12290;&#31995;&#32479;&#39044;&#35774;&#30340;&#30417;&#21548;&#22120;&#23454;&#29616;&#30340;&#22788;&#29702;&#36807;&#31243;&#23601;&#26159;&#34987;&#30417;&#21548;&#30340;&#26041;&#27861;&#35201;&#20570;&#30340;&#65288;&#34987;&#30417;&#21548;&#30340;&#26041;&#27861;&#25152;&#20570;&#30340;&#20854;&#23454;&#20165;&#20165;&#26159;&#28608;&#27963;&#30417;&#21548;&#22120;&#65292;                        &#8220;&#23454;&#38469;&#8221;&#30340;&#24037;&#20316;&#26159;&#30001;&#30417;&#21548;&#22120;&#23436;&#25104;&#30340;&#65289;&#12290;&#19981;&#36807;&#65292;&#20320;&#21487;&#20197;&#33258;&#30001;&#22320;&#36873;&#25321;&#23454;&#29616;			&#19968;&#20010;&#33258;&#24049;&#23450;&#21046;&#30340;&#30417;&#21548;&#22120;&#65288;&#27604;&#22914;&#65292;&#23454;&#29616;&#24182;&#27880;&#20876;&#29992;&#26469;&#22788;&#29702;&#22788;&#29702;<tt class="literal">LoadEvent</tt>&#30340;<tt class="literal">LoadEventListener</tt>&#25509;&#21475;&#65289;&#65292;                        &#26469;&#36127;&#36131;&#22788;&#29702;&#25152;&#26377;&#30340;&#35843;&#29992;<tt class="literal">Session</tt>&#30340;<tt class="literal">load()</tt>&#26041;&#27861;&#30340;&#35831;&#27714;&#12290;        </p><p>		    &#30417;&#21548;&#22120;&#24212;&#35813;&#34987;&#30475;&#20316;&#26159;&#21333;&#20363;(singleton)&#23545;&#35937;&#65292;&#20063;&#23601;&#26159;&#35828;&#65292;&#25152;&#26377;&#21516;&#31867;&#22411;&#30340;&#20107;&#20214;&#30340;&#22788;&#29702;&#20849;&#20139;&#21516;&#19968;&#20010;&#30417;&#21548;&#22120;&#23454;&#20363;&#65292;&#22240;&#27492;&#30417;&#21548;&#22120;			&#19981;&#24212;&#35813;&#20445;&#23384;&#20219;&#20309;&#29366;&#24577;&#65288;&#20063;&#23601;&#26159;&#19981;&#24212;&#35813;&#20351;&#29992;&#25104;&#21592;&#21464;&#37327;&#65289;&#12290;        </p><p>                    &#29992;&#25143;&#23450;&#21046;&#30340;&#30417;&#21548;&#22120;&#24212;&#35813;&#23454;&#29616;&#19982;&#25152;&#35201;&#22788;&#29702;&#30340;&#20107;&#20214;&#30456;&#23545;&#24212;&#30340;&#25509;&#21475;&#65292;&#25110;&#32773;&#20174;&#19968;&#20010;&#21512;&#36866;&#30340;&#22522;&#31867;&#32487;&#25215;&#65288;&#29978;&#33267;&#26159;&#20174;Hibernate&#33258;&#24102;&#30340;&#40664;&#35748;&#20107;&#20214;&#30417;&#21548;&#22120;&#31867;&#32487;&#25215;&#65292;                        &#20026;&#20102;&#26041;&#20415;&#20320;&#36825;&#26679;&#20570;&#65292;&#36825;&#20123;&#31867;&#37117;&#34987;&#22768;&#26126;&#25104;non-final&#30340;&#20102;&#65289;&#12290;&#29992;&#25143;&#23450;&#21046;&#30340;&#30417;&#21548;&#22120;&#21487;&#20197;&#36890;&#36807;&#32534;&#31243;&#20351;&#29992;<tt class="literal">Configuration</tt>&#23545;&#35937;                        &#26469;&#27880;&#20876;&#65292;&#20063;&#21487;&#20197;&#22312;Hibernate&#30340;XML&#26684;&#24335;&#30340;&#37197;&#32622;&#25991;&#20214;&#20013;&#36827;&#34892;&#22768;&#26126;&#65288;&#19981;&#25903;&#25345;&#22312;Properties&#26684;&#24335;&#30340;&#37197;&#32622;&#25991;&#20214;&#22768;&#26126;&#30417;&#21548;&#22120;&#65289;&#12290;                        &#19979;&#38754;&#26159;&#19968;&#20010;&#29992;&#25143;&#23450;&#21046;&#30340;&#21152;&#36733;&#20107;&#20214;(load event)&#30340;&#30417;&#21548;&#22120;&#65306;        </p><pre class="programlisting">public class MyLoadListener implements LoadEventListener {    // this is the single method defined by the LoadEventListener interface    public void onLoad(LoadEvent event, LoadEventListener.LoadType loadType)            throws HibernateException {        if ( !MySecurity.isAuthorized( event.getEntityClassName(), event.getEntityId() ) ) {            throw MySecurityException("Unauthorized access");        }    }}</pre><p>		    &#20320;&#36824;&#38656;&#35201;&#20462;&#25913;&#19968;&#22788;&#37197;&#32622;&#65292;&#26469;&#21578;&#35785;Hibernate&#65292;&#38500;&#20102;&#40664;&#35748;&#30340;&#30417;&#21548;&#22120;&#65292;&#36824;&#35201;&#38468;&#21152;&#36873;&#23450;&#30340;&#30417;&#21548;&#22120;&#12290;        </p><pre class="programlisting">&lt;hibernate-configuration&gt;    &lt;session-factory&gt;        ...        &lt;event type="load"&gt;            &lt;listener class="com.eg.MyLoadListener"/&gt;            &lt;listener class="org.hibernate.event.def.DefaultLoadEventListener"/&gt;        &lt;/event&gt;    &lt;/session-factory&gt;&lt;/hibernate-configuration&gt;</pre><p>		    &#30475;&#30475;&#29992;&#21478;&#19968;&#31181;&#26041;&#24335;&#65292;&#36890;&#36807;&#32534;&#31243;&#30340;&#26041;&#24335;&#26469;&#27880;&#20876;&#23427;&#12290;        </p><pre class="programlisting">Configuration cfg = new Configuration();LoadEventListener[] stack = { new MyLoadListener(), new DefaultLoadEventListener() };cfg.EventListeners().setLoadEventListeners(stack);</pre><p>		    &#36890;&#36807;&#22312;XML&#37197;&#32622;&#25991;&#20214;&#22768;&#26126;&#32780;&#27880;&#20876;&#30340;&#30417;&#21548;&#22120;&#19981;&#33021;&#20849;&#20139;&#23454;&#20363;&#12290;&#22914;&#26524;&#22312;&#22810;&#20010;<tt class="literal">&lt;listener/&gt;</tt>&#33410;&#28857;&#20013;&#20351;&#29992;			&#20102;&#30456;&#21516;&#30340;&#31867;&#30340;&#21517;&#23383;&#65292;&#21017;&#27599;&#19968;&#20010;&#24341;&#29992;&#37117;&#23558;&#20250;&#20135;&#29983;&#19968;&#20010;&#29420;&#31435;&#30340;&#23454;&#20363;&#12290;&#22914;&#26524;&#20320;&#38656;&#35201;&#22312;&#22810;&#20010;&#30417;&#21548;&#22120;&#31867;&#22411;&#20043;&#38388;&#20849;&#20139;			&#30417;&#21548;&#22120;&#30340;&#23454;&#20363;&#65292;&#21017;&#20320;&#24517;&#39035;&#20351;&#29992;&#32534;&#31243;&#30340;&#26041;&#24335;&#26469;&#36827;&#34892;&#27880;&#20876;&#12290;        </p><p>                    &#20026;&#20160;&#20040;&#25105;&#20204;&#23454;&#29616;&#20102;&#29305;&#23450;&#30417;&#21548;&#22120;&#30340;&#25509;&#21475;&#65292;&#22312;&#27880;&#20876;&#30340;&#26102;&#20505;&#36824;&#35201;&#26126;&#30830;&#25351;&#20986;&#25105;&#20204;&#35201;&#27880;&#20876;&#21738;&#20010;&#20107;&#20214;&#30340;&#30417;&#21548;&#22120;&#21602;&#65311;                    &#36825;&#26159;&#22240;&#20026;&#19968;&#20010;&#31867;&#21487;&#33021;&#23454;&#29616;&#22810;&#20010;&#30417;&#21548;&#22120;&#30340;&#25509;&#21475;&#12290;&#22312;&#27880;&#20876;&#30340;&#26102;&#20505;&#26126;&#30830;&#25351;&#23450;&#35201;&#30417;&#21548;&#30340;&#20107;&#20214;&#65292;&#21487;&#20197;&#35753;&#21551;&#29992;&#25110;&#32773;&#31105;&#29992;&#23545;&#26576;&#20010;&#20107;&#20214;&#30340;&#30417;&#21548;&#30340;&#37197;&#32622;&#24037;&#20316;&#31616;&#21333;&#20123;&#12290;        </p></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="objectstate-decl-security"></a>12.3.&nbsp;		Hibernate&#30340;&#22768;&#26126;&#24335;&#23433;&#20840;&#26426;&#21046;		</h2></div></div><div></div></div><p>		    &#36890;&#24120;&#65292;Hibernate&#24212;&#29992;&#31243;&#24207;&#30340;&#22768;&#26126;&#24335;&#23433;&#20840;&#26426;&#21046;&#30001;&#20250;&#35805;&#22806;&#35266;&#23618;(session facade)&#25152;&#31649;&#29702;&#12290;                    &#29616;&#22312;&#65292;Hibernate3&#20801;&#35768;&#26576;&#20123;&#29305;&#23450;&#30340;&#34892;&#20026;&#30001;JACC&#36827;&#34892;&#35768;&#21487;&#31649;&#29702;&#65292;&#30001;JAAS&#36827;&#34892;&#25480;&#26435;&#31649;&#29702;&#12290;                    &#26412;&#21151;&#33021;&#26159;&#19968;&#20010;&#24314;&#31435;&#22312;&#20107;&#20214;&#26694;&#26550;&#20043;&#19978;&#30340;&#21487;&#36873;&#30340;&#21151;&#33021;&#12290;        </p><p>		    &#39318;&#20808;&#65292;&#20320;&#24517;&#39035;&#35201;&#37197;&#32622;&#36866;&#24403;&#30340;&#20107;&#20214;&#30417;&#21548;&#22120;&#65288;event listener&#65289;&#65292;&#26469;&#28608;&#27963;&#20351;&#29992;JAAS&#31649;&#29702;&#25480;&#26435;&#30340;&#21151;&#33021;&#12290;        </p><pre class="programlisting">&lt;listener type="pre-delete" class="org.hibernate.secure.JACCPreDeleteEventListener"/&gt;&lt;listener type="pre-update" class="org.hibernate.secure.JACCPreUpdateEventListener"/&gt;&lt;listener type="pre-insert" class="org.hibernate.secure.JACCPreInsertEventListener"/&gt;&lt;listener type="pre-load" class="org.hibernate.secure.JACCPreLoadEventListener"/&gt;</pre><p>            &#27880;&#24847;&#65292;<tt class="literal">&lt;listener type="..." class="..."/&gt;</tt>&#21482;&#26159;<tt class="literal">&lt;event type="..."&gt;&lt;listener class="..."/&gt;&lt;/event&gt;</tt>&#30340;&#31616;&#20889;&#65292;&#23545;&#27599;&#19968;&#20010;&#20107;&#20214;&#31867;&#22411;&#37117;&#24517;&#39035;&#20005;&#26684;&#30340;&#26377;&#19968;&#20010;&#30417;&#21548;&#22120;&#19982;&#20043;&#23545;&#24212;&#12290;        </p><p>		    &#25509;&#19979;&#26469;&#65292;&#20173;&#28982;&#22312;<tt class="literal">hibernate.cfg.xml</tt>&#25991;&#20214;&#20013;&#65292;&#32465;&#23450;&#35282;&#33394;&#30340;&#26435;&#38480;&#65306;        </p><pre class="programlisting">&lt;grant role="admin" entity-name="User" actions="insert,update,read"/&gt;&lt;grant role="su" entity-name="User" actions="*"/&gt;</pre><p>		    &#36825;&#20123;&#35282;&#33394;&#30340;&#21517;&#23383;&#23601;&#26159;&#20320;&#30340;JACC provider&#25152;&#23450;&#20041;&#30340;&#35282;&#33394;&#30340;&#21517;&#23383;&#12290;        </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="transactions.html">&#19978;&#19968;&#39029;</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="index.html">&#19978;&#19968;&#32423;</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="batch.html">&#19979;&#19968;&#39029;</a></td></tr><tr><td width="40%" align="left" valign="top">&#31532;&nbsp;11&nbsp;&#31456;&nbsp;&#20107;&#21153;&#21644;&#24182;&#21457;&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">&#36215;&#22987;&#39029;</a></td><td width="40%" align="right" valign="top">&nbsp;&#31532;&nbsp;13&nbsp;&#31456;&nbsp;&#25209;&#37327;&#22788;&#29702;&#65288;Batch processing&#65289;</td></tr></table></div></body></html>

⌨️ 快捷键说明

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