<?xml version="1.0" encoding="UTF-8"?>
<page xmlns="http://api.springnote.com">
  <identifier type="integer">3478245</identifier>
  <title>Hibernate &#50640;&#49436; Interceptor &#49324;&#50857;&#54616;&#44592;</title>
  <relation_is_part_of type="integer">1782366</relation_is_part_of>
  <date_modified type="datetime">2009-05-26T07:23:25Z</date_modified>
  <uri>http://glory.springnote.com/pages/3478245</uri>
  <date_created type="datetime">2009-05-26T07:14:24Z</date_created>
  <source>&lt;p&gt;&#54616;&#51060;&#48260;&#45348;&#51060;&#53944;&#47484; &#49324;&#50857;&#54616;&#45796;&#48372;&#47732; &#44061;&#52404;&#47484; &#51200;&#51109;&#54624; &#46412; &#49373;&#49457; &#54596;&#46300;&#50640; &#44050;&#51060; &#51088;&#46041;&#51004;&#47196; &#46308;&#50612; &#44052;&#51004;&#47732; &#54616;&#45716; &#46412;&#47484; &#45712;&#45188; &#46412;&#44032; &#51080;&#45796;. &#50696;&#47484; &#46308;&#47732; createdAt&#51060;&#45208; updatedAt &#44057;&#51008; &#44221;&#50864;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060;&#47092; &#44221;&#50864; &#54616;&#51060;&#48260;&#45348;&#51060;&#53944;&#50640;&#49436; &#44061;&#52404;&#47484; &#44032;&#47196;&#52292;&#49436; &#52376;&#47532;&#54616;&#45716; &#44592;&#45733;&#51008; interceptor&#47484; &#49324;&#50857;&#54616;&#47732; &#46108;&#45796;.&amp;nbsp;&amp;nbsp; &#48169;&#48277;&#51008; Interceptor &#51064;&#53552;&#54168;&#51060;&#49828;&#47484; implements &#54616;&#44144;&#45208; EmptyInterceptor &#53364;&#47000;&#49828;&#47484;&lt;/p&gt;
&lt;p&gt;&#49345;&#49549;&#48155;&#45716; &#44163;&#51060;&#45796;. &#45796;&#51020;&#51032; &#44536; &#50696;&#51228;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;public class DateInterceptor extends EmptyInterceptor {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final long serialVersionUID = 1L;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onSave(Object entity, Serializable id, Object[] state,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String[] propertyNames, Type[] types) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Date currentTimestamp = null;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; boolean changed = false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; state.length; i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ("createdAt".equals(propertyNames[i])) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; state[i] = new Date();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; changed = true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ("updatedAt".equals(propertyNames[i])) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; state[i] = new Date();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; changed = true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return changed;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onFlushDirty(Object entity, Serializable id,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Object[] currentState, Object[] previousState,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String[] propertyNames, Type[] types) {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; boolean changed = false;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; currentState.length; i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ("updatedAt".equals(propertyNames[i])) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; currentState[i] = new Date();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; changed = true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return changed;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#49828;&#54532;&#47553;&#51012; &#49324;&#50857;&#54620;&#45796;&#47732; &#54616;&#51060;&#48260;&#45348;&#51060;&#53944; &#49464;&#49496; &#54057;&#53664;&#47532;&#50640; &#45796;&#51020;&#51012; &#52628;&#44032;&#54616;&#51088;~~&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bean id="sessionFactory"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="entityInterceptor"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bean class="glory.board.model.hibernate.interceptor.DateInterceptor"/&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/bean&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div style="padding: 5px; display: none; height: auto; width: auto; background-color: rgb(0, 0, 0); font-size: 13px; line-height: 1.2;"&gt;&amp;nbsp;&lt;/div&gt;
</source>
  <rights nil="true"></rights>
  <creator>http://yyk1981.myid.net/</creator>
  <contributor_modified>http://yyk1981.myid.net/</contributor_modified>
  <version type="integer">14</version>
  <tags>java,hibernate,interceptor</tags>
</page>
