無聊人士

          搬家==》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
          主站蜘蛛池模板: 华池县| 肇庆市| 鱼台县| 北流市| 海盐县| 湘潭市| 克拉玛依市| 兴安县| 宜宾市| 平远县| 息烽县| 凤阳县| 宁河县| 双桥区| 安福县| 霍城县| 井研县| 三门县| 花莲县| 西平县| 永康市| 竹溪县| 上犹县| 昂仁县| 通辽市| 舞钢市| 疏附县| 双江| 富阳市| 榕江县| 金塔县| 兴仁县| 邯郸县| 香河县| 湘乡市| 平湖市| 巴林左旗| 沁水县| 东乡| 徐闻县| 巫山县|