軟件工程實(shí)踐者

          統(tǒng)計(jì)

          留言簿

          友情鏈結(jié)

          閱讀排行榜

          評論排行榜

          Oracle ADF和Spring的結(jié)合

          Oracle ADF(Application Developement Framework)是一套快速開發(fā)企業(yè)級J2EE的MVC框架. Oracle在Model層和業(yè)務(wù)服務(wù)層上提供的缺省實(shí)現(xiàn)對開發(fā)基于數(shù)據(jù)庫的應(yīng)用提供了極大的便利,尤其是它的ADF BC(Business components),這個微型的MVC框架提供了直接映射數(shù)據(jù)庫表的能力,結(jié)合View端的展現(xiàn)(Oracle 提供了桌面端Swing/JClient和Web端UIX的實(shí)現(xiàn)),開發(fā)起來就如同用Borland的數(shù)據(jù)感知控件一樣。

          Spring目前是J2EE社區(qū)一個比較火的框架,應(yīng)用的比較廣,那如何進(jìn)行二者的有機(jī)結(jié)合呢?

          我們已經(jīng)習(xí)慣了Spring的IOC框架,方便的使用getBean()方法來獲得我們想要的對象,因此,如果能通過Spring來生成需要的對象,然后把這個對象注冊為Data Control(Oracle中數(shù)據(jù)感知組件),這樣就可以利用ADF BC的威力來快速構(gòu)建一個數(shù)據(jù)庫應(yīng)用。問題的關(guān)鍵就在于ADF為每一個data control指定了一個工廠類屬性,而這個工廠類屬性的實(shí)例值需要我們用Spring來生成,就OK了。舉一個實(shí)際的例子:
          在Spring中,我們定義了如下的接口:
          package nl.amis.spring.hrm;
          import java.util.List;
          
          public interface HrmService  {
            public void setEmployeeDao(EmpDAO employeeDAO);
            public List getAllEmployees();    
            public long getSalarySum(); 
          }


          配置文件為:
          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
              "http://www.springframework.org/dtd/spring-beans.dtd">
          <beans>
            <bean id="dataSourceDBDirect"
                  class="org.springframework.jdbc.datasource.DriverManagerDataSource"
                  destroy-method="close">
              <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
              <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
              <property name="username" value="scott"/>
              <property name="password" value="tiger"/>
            </bean>
            <bean id="employeeDAO" class="nl.amis.spring.jdbc.EmployeeJdbcDAO">
              <property name="dataSource">
                <ref local="dataSourceDBDirect"/>
              </property>
            </bean>
            <bean id="hrmService" class="nl.amis.spring.hrm.HrmServiceImpl">
              <property name="employeeDao">
                <ref local="employeeDAO"/>
              </property>
            </bean>
          </beans>

          在Oracle JDeveloper開發(fā)環(huán)境下,我們找到
          nl.amis.spring.hrmServiceImp這個類,然后用菜單命令把它注冊為一個Data control組件。這個新生成的Data control缺省名字是:HrmServiceImplDataControl,查看它的屬性,有一個Factory class屬性,找到這個屬性所指的類,修改如下源碼:

          Object bean = oracle.jbo.common.JBOClass.forName(beanClass).newInstance();


          上面的代碼就是生成HrmServiceImpl對象的代碼,把它改為:

          ApplicationContext springCtx = new ClassPathXmlApplicationContext("SpringConfig.xml");
          Object bean = springCtx.getBean("hrmService");


          這樣主要工作就OK啦,剩下的就是修改一下Data Control的配置文件(在注冊成為Data Control后生成的同名.xml文件),修改
          <content>中的<AccessorAtribute>部分,把id改為:allEmployees; BeanClass 改為nl.amis.spring.hrm.Employee; IsCollection="true"; Type改為java.Util.List.
          以上修改表明我們需要的是通過employeeDao獲得的Employee的集合,把這個結(jié)合作為結(jié)果集應(yīng)用到ADF BC中。

          英文原文出自:http://technology.amis.nl/blog/index.php?p=765

          posted on 2006-01-06 22:06 軟件工程實(shí)踐者 閱讀(1009) 評論(0)  編輯  收藏 所屬分類: 開源框架


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 昌图县| 军事| 楚雄市| 莎车县| 根河市| 石门县| 永定县| 蕲春县| 如东县| 惠安县| 扎鲁特旗| 威信县| 黄陵县| 平邑县| 文安县| 湘潭县| 福清市| 安新县| 舞阳县| 玉树县| 东港市| 炉霍县| 广平县| 汤原县| 牟定县| 措勤县| 泗阳县| 水城县| 余庆县| 舟曲县| 扎兰屯市| 金山区| 东台市| 通化县| 科技| 静宁县| 凌云县| 资中县| 方城县| 林口县| 读书|