鷹翔宇空

          學習和生活

          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 閱讀(613) 評論(0)  編輯  收藏 所屬分類: hibernateSpring
          主站蜘蛛池模板: 无锡市| 哈尔滨市| 文山县| 老河口市| 邹平县| 东光县| 海淀区| 泾阳县| 湟源县| 贡觉县| 武城县| 疏勒县| 井研县| 海城市| 乌什县| 金乡县| 屏东县| 长葛市| 荃湾区| 海城市| 英山县| 蓬安县| 哈巴河县| 田阳县| 织金县| 佛坪县| 和硕县| 台东县| 板桥市| 高雄县| 吴忠市| 安宁市| 平凉市| 西安市| 田东县| 颍上县| 育儿| 改则县| 汝城县| 西乌珠穆沁旗| 临沧市|