鷹翔宇空

          學習和生活

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

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

          作者: 冰云
          整理:robbin

          原理:利用Hibernate3提供的PostLoadEventListener在loadHibernate實體類的時候觸發(fā)PostLoadEvent事件,編寫一個自定義的事件監(jiān)聽器,注入依賴的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 閱讀(613) 評論(0)  編輯  收藏 所屬分類: hibernateSpring
          主站蜘蛛池模板: 霸州市| 林甸县| 沈阳市| 西林县| 乌鲁木齐县| 苍山县| 武安市| 怀化市| 五常市| 江西省| 德兴市| 仁怀市| 长葛市| 屏山县| 泾阳县| 汉川市| 蓬安县| 彰化县| 赫章县| 乡城县| 孟津县| 永和县| 达州市| 凤山市| 宜丰县| 台中市| 阿拉善左旗| 百色市| 图片| 通河县| 竹溪县| 三穗县| 绥棱县| 文登市| 博白县| 修武县| 洪雅县| 扶沟县| 饶河县| 健康| 合川市|