📄 events.po
字号:
msgid ""msgstr """Project-Id-Version: PACKAGE VERSION\n""Report-Msgid-Bugs-To: http://bugs.kde.org\n""POT-Creation-Date: 2007-10-25 07:47+0000\n""PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n""Last-Translator: FULL NAME <EMAIL@ADDRESS>\n""Language-Team: LANGUAGE <LL@li.org>\n""MIME-Version: 1.0\n""Content-Type: text/plain; charset=UTF-8\n""Content-Transfer-Encoding: 8bit\n"#. Tag: title#: events.xml:5#, no-c-formatmsgid "Interceptors and events"msgstr "インターセプタとイベント"#. Tag: para#: events.xml:7#, no-c-formatmsgid """It is often useful for the application to react to certain events that occur ""inside Hibernate. This allows implementation of certain kinds of generic ""functionality, and extension of Hibernate functionality."msgstr """アプリケーションがHibernateの内部で発生するイベントに対応できると役に立つこと""があります。 ある種の一般的な機能を実装できるようになり、 またHibernateの機能""を拡張することもできるようになります。"#. Tag: title#: events.xml:14#, no-c-formatmsgid "Interceptors"msgstr "インターセプタ"#. Tag: para#: events.xml:16#, no-c-formatmsgid """The <literal>Interceptor</literal> interface provides callbacks from the ""session to the application allowing the application to inspect and/or ""manipulate properties of a persistent object before it is saved, updated, ""deleted or loaded. One possible use for this is to track auditing ""information. For example, the following <literal>Interceptor</literal> ""automatically sets the <literal>createTimestamp</literal> when an ""<literal>Auditable</literal> is created and updates the ""<literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</""literal> is updated."msgstr """<literal>Interceptor</literal> インターフェイスを使って、 セッションからアプ""リケーションへコールバックをすることができます。 これにより永続オブジェクトの""保存、更新、削除、読み込みの前に、 アプリケーションがプロパティを検査したり操""作したりできるようになります。 これは監査情報の追跡に利用できます。 下の例で ""<literal>Interceptor</literal> は <literal>Auditable</literal> が作成されると""自動的に <literal>createTimestamp</literal> を設定し、 <literal>Auditable</""literal> が更新されると自動的に <literal>lastUpdateTimestamp</literal> プロパ""ティを更新します。"#. Tag: para#: events.xml:27#, no-c-formatmsgid """You may either implement <literal>Interceptor</literal> directly or (better) ""extend <literal>EmptyInterceptor</literal>."msgstr """<literal>Interceptor</literal> を直接実装したり、 (さらによいのは)""<literal>EmptyInterceptor</literal> を拡張したりできます。"#. Tag: programlisting#: events.xml:32#, no-c-formatmsgid """<![CDATA[package org.hibernate.test;\n""\n""import java.io.Serializable;\n""import java.util.Date;\n""import java.util.Iterator;\n""\n""import org.hibernate.EmptyInterceptor;\n""import org.hibernate.Transaction;\n""import org.hibernate.type.Type;\n""\n""public class AuditInterceptor extends EmptyInterceptor {\n""\n"" private int updates;\n"" private int creates;\n"" private int loads;\n""\n"" public void onDelete(Object entity,\n"" Serializable id,\n"" Object[] state,\n"" String[] propertyNames,\n"" Type[] types) {\n"" // do nothing\n"" }\n""\n"" public boolean onFlushDirty(Object entity,\n"" Serializable id,\n"" Object[] currentState,\n"" Object[] previousState,\n"" String[] propertyNames,\n"" Type[] types) {\n""\n"" if ( entity instanceof Auditable ) {\n"" updates++;\n"" for ( int i=0; i < propertyNames.length; i++ ) {\n"" if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) {\n"" currentState[i] = new Date();\n"" return true;\n"" }\n"" }\n"" }\n"" return false;\n"" }\n""\n"" public boolean onLoad(Object entity,\n"" Serializable id,\n"" Object[] state,\n"" String[] propertyNames,\n"" Type[] types) {\n"" if ( entity instanceof Auditable ) {\n"" loads++;\n"" }\n"" return false;\n"" }\n""\n"" public boolean onSave(Object entity,\n"" Serializable id,\n"" Object[] state,\n"" String[] propertyNames,\n"" Type[] types) {\n""\n"" if ( entity instanceof Auditable ) {\n"" creates++;\n"" for ( int i=0; i<propertyNames.length; i++ ) {\n"" if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"" state[i] = new Date();\n"" return true;\n"" }\n"" }\n"" }\n"" return false;\n"" }\n""\n"" public void afterTransactionCompletion(Transaction tx) {\n"" if ( tx.wasCommitted() ) {\n"" System.out.println(\"Creations: \" + creates + \", Updates: \" + ""updates, \"Loads: \" + loads);\n"" }\n"" updates=0;\n"" creates=0;\n"" loads=0;\n"" }\n""\n""}]]>"msgstr ""#. Tag: para#: events.xml:34#, no-c-formatmsgid """Interceptors come in two flavors: <literal>Session</literal>-scoped and ""<literal>SessionFactory</literal>-scoped."msgstr """インターセプタには二種類あります: <literal>Session</literal> スコープのもの""と <literal>SessionFactory</literal> スコープのものです。"#. Tag: para#: events.xml:39#, no-c-formatmsgid """A <literal>Session</literal>-scoped interceptor is specified when a session ""is opened using one of the overloaded SessionFactory.openSession() methods ""accepting an <literal>Interceptor</literal>."msgstr """<literal>Session</literal> スコープのインターセプタは、 セッションをオープン""するときに指定します。 <literal>Interceptor</literal> を引数に取る""SessionFactory.openSession() のオーバーロードメソッドの一つを使います。"#. Tag: programlisting#: events.xml:45#, no-c-formatmsgid "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"msgstr ""#. Tag: para#: events.xml:47#, no-c-formatmsgid """A <literal>SessionFactory</literal>-scoped interceptor is registered with ""the <literal>Configuration</literal> object prior to building the ""<literal>SessionFactory</literal>. In this case, the supplied interceptor ""will be applied to all sessions opened from that <literal>SessionFactory</""literal>; this is true unless a session is opened explicitly specifying the ""interceptor to use. <literal>SessionFactory</literal>-scoped interceptors ""must be thread safe, taking care to not store session-specific state since ""multiple sessions will use this interceptor (potentially) concurrently."msgstr """<literal>SessionFactory</literal> スコープのインターセプタは ""<literal>Configuration</literal> オブジェクトを使って登録します。 これは ""<literal>SessionFactory</literal> の構築よりも優先されます。 この場合、提供さ""れるインターセプタは <literal>SessionFactory</literal> からオープンされたすべ""てのセッションに適用されます。 これは使用するインターセプタを明示的に指定して""セッションをオープンしない限り、そうなります。 <literal>SessionFactory</""literal> スコープのインターセプタはスレッドセーフでなければなりません。 複数""のセッションが(潜在的に)このインターセプタを同時並行で使用することになるた""め、 セッション固有の状態を格納しないように気をつけてください。"#. Tag: programlisting#: events.xml:56#, no-c-formatmsgid """<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"msgstr ""#. Tag: title#: events.xml:61#, no-c-formatmsgid "Event system"msgstr "イベントシステム"#. Tag: para#: events.xml:63#, no-c-formatmsgid """If you have to react to particular events in your persistence layer, you may ""also use the Hibernate3 <emphasis>event</emphasis> architecture. The event ""system can be used in addition or as a replacement for interceptors."msgstr """永続化層で特定のイベントに対応しなければならない場合、 Hibernate3の ""<emphasis>イベント</emphasis> アーキテクチャを使うこともできます。 イベントシ""ステムはインターセプタと一緒に使うか、またはインターセプタの代わりとして使う""ことができます。"#. Tag: para
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -