鷹翔宇空

          學習和生活

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks

          原文引自:http://www.javaeye.com/pages/viewpage.action?pageId=1141

          作者: 冰云
          整理:robbin

          原理:利用Hibernate3提供的PostLoadEventListener在loadHibernate實體類的時候觸發PostLoadEvent事件,編寫一個自定義的事件監聽器,注入依賴的Spring Bean對象

          SpringHibernateInjector
          import org.hibernate.event.PostLoadEvent;
          import org.hibernate.event.PostLoadEventListener;
          import org.springframework.beans.factory.BeanFactory;
          import org.springframework.beans.factory.BeanFactoryAware;
          import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
          
          public class SpringHibernateInjector implements PostLoadEventListener, BeanFactoryAware{
          
              AutowireCapableBeanFactory beanFactory;
             
              public void onPostLoad(PostLoadEvent event) {
                  Object hibernateObject = event.getEntity();
                  beanFactory.autowireBeanProperties(hibernateObject, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, false);   
              }
          
              public void setBeanFactory(BeanFactory factory)  {
                  beanFactory = (AutowireCapableBeanFactory) factory;
              }
          
          }
          applicationContext.xml
          <bean id="sessionFactory"
                  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
                  <property name="dataSource">
                      <ref bean="dataSource" />
                  </property>
                  <property name="mappingResources">
                      <list>
                          ...domains.hbm.xml here...
                      </list>
                  </property>
                  <property name="hibernateProperties">
                      <props>
                          <prop key="hibernate.dialect">
                              org.hibernate.dialect.Oracle9Dialect
                          </prop>
                          <prop key="hibernate.query.substitutions">
                              true 1, false 0
                          </prop>
                          <prop key="hibernate.show_sql">false</prop>
                      </props>
                  </property>
                 <property name="eventListeners">
                    <map>
                      <entry key="post-load">
                        <!-- This hibernate interceptor allows us to use Spring to inject services
           into Hibernate managed domain objects -->   
                        <bean class="yourpackage.SpringHibernateInjector"/>
                      </entry>        
                     </map>
              </property>
              </bean>

          注:此方法來自于ThoughtWorksPerrynFowler,俺只是摘抄一下

          posted on 2006-02-11 14:30 TrampEagle 閱讀(619) 評論(0)  編輯  收藏 所屬分類: hibernateSpring
          主站蜘蛛池模板: 大竹县| 襄汾县| 华宁县| 昌图县| 云林县| 南漳县| 贺州市| 河东区| 新丰县| 璧山县| 福建省| 海伦市| 砀山县| 呼玛县| 霍城县| 班玛县| 金阳县| 舞阳县| 和顺县| 攀枝花市| 永城市| 清徐县| 阿拉善右旗| 永德县| 丹江口市| 丰镇市| 宁南县| 河间市| 伊川县| 莫力| 老河口市| 博乐市| 阿尔山市| 成都市| 朝阳区| 南城县| 宁远县| 金堂县| 兴义市| 赤壁市| 乐亭县|