無聊人士

          搬家==》www.soapui.cn

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            32 隨筆 :: 0 文章 :: 60 評論 :: 0 Trackbacks

          最初我是用spring的aop來實現spring與orbroker“結合”的,在befor的時候把orbroker和trans注進 service去,after的時候commit,如果出現exception由rollback。怎么看怎么別扭,還是 江南白衣 這個“刨蟲”提醒了一下,說是spring module的cvs上有orbrokerTemplate。

          有現成的東西,俺就不用現學木匠造輪子了,省事省心,還順眼。

          從spring module的cvs上下源碼,把org.springmodules.orm.orbroker、org.springmodules.orm.orbroker.support兩個package的東西拷進project(或者是打成jar扔進去)。

          與ibatis、hibernate一樣,java代碼部分很簡單,我做的測試代碼就這么幾行
          public interface ResultDAO {
            List find(String parentId, String catalogId);
          }
          public class ResultDAOORBroker extends BrokerDaoSupport implements ResultDAO {
            public List find(String parentId, String catalogId) {
              return this.getBrokerTemplate().selectMany("find",
                  new String[]{"parentId", "catalogId"},
                  new String[]{parentId, catalogId});
            }
          }
          public interface ResultManager {
            List<Result> find(String parentId, String catalogId);
          }

          public class ResultManagerImpl implements ResultManager {

            @SuppressWarnings("unchecked")
            public List<Result> find(String parentId, String catalogId) {
              return resultDAO.find(parentId, catalogId);
            }

            private ResultDAO resultDAO;
            public void setResultDAO(ResultDAO resultDAO) {
              this.resultDAO = resultDAO;
            }
          }
          最主要的還是xml的配置文件,與用ibatis大體上差不了多少。

          DataSource、TransactionManager是必須的
              <bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                  <property name="dataSource" ref="DataSource" />
              </bean>
              <bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
                  <property name="driverClass" value="${marekt.jdbc.driver}" />
                  <property name="user" value="${marekt.jdbc.user}" />
                  <property name="password" value="${marekt.jdbc.password}" />
                  <property name="jdbcUrl" value="${marekt.jdbc.url}" />
                  <property name="initialPoolSize" value="2" />
              </bean>
              <bean id="PlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
                  <property name="locations" value="classpath:jdbc.properties" />
              </bean>
          然后是一個Broker的Factory
              <bean id="BrokerFactory" class="org.springmodules.orm.orbroker.BrokerFactoryBean">
                  <property name="dataSource" ref="DataSource" />
                  <property name="configLocation" value="classpath:orbroker/orbroker.xml" />
              </bean>

          剩下的事情就是DAO和Manager了。
              <bean id="ResultDAO" class="dao.impl.ResultDAOORBroker">
                  <property name="broker" ref="BrokerFactory" />
              </bean>
              <bean id="ResultManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
                  <property name="transactionManager" ref="TransactionManager" />
                  <property name="transactionAttributes">
                      <props>
                          <prop key="*">PROPAGATION_REQUIRED</prop>
                      </props>
                  </property>
                  <property name="target">
                      <bean class="services.impl.ResultManagerImpl">
                          <property name="resultDAO" ref="ResultDAO" />
                      </bean>
                  </property>
              </bean>
          posted on 2005-11-15 23:48 mmwy 閱讀(474) 評論(0)  編輯  收藏 所屬分類: O/R Broker
          主站蜘蛛池模板: 敦煌市| 咸宁市| 绥中县| 古田县| 黔西| 晋州市| 封丘县| 南川市| 象州县| 娱乐| 瑞丽市| 龙陵县| 黔西县| 平潭县| 临江市| 岚皋县| 富宁县| 三明市| 广灵县| 会理县| 肇州县| 同仁县| 湘阴县| 满城县| 连城县| 新津县| 方山县| 五原县| 汤阴县| 泸西县| 云阳县| 革吉县| 敦煌市| 渭源县| 富宁县| 嘉禾县| 长垣县| 抚远县| 宿州市| 司法| 榆林市|