鷹翔宇空

          學習和生活

          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
          主站蜘蛛池模板: 如东县| 芷江| 财经| 平潭县| 邮箱| 郯城县| 林周县| 房产| 莆田市| 平潭县| 云霄县| 宁国市| 北安市| 铜鼓县| 信阳市| 莱西市| 大连市| 鹤岗市| 土默特右旗| 万宁市| 新余市| 靖边县| 项城市| 苏尼特右旗| 本溪市| 苍溪县| 翁牛特旗| 荔浦县| 桦川县| 宁乡县| 乃东县| 高邮市| 利川市| 达尔| 保德县| 沾化县| 宁阳县| 玉溪市| 龙陵县| 凭祥市| 白玉县|