軟件工程實踐者

          統計

          留言簿

          友情鏈結

          閱讀排行榜

          評論排行榜

          Oracle ADF和Spring的結合

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

          Spring目前是J2EE社區一個比較火的框架,應用的比較廣,那如何進行二者的有機結合呢?

          我們已經習慣了Spring的IOC框架,方便的使用getBean()方法來獲得我們想要的對象,因此,如果能通過Spring來生成需要的對象,然后把這個對象注冊為Data Control(Oracle中數據感知組件),這樣就可以利用ADF BC的威力來快速構建一個數據庫應用。問題的關鍵就在于ADF為每一個data control指定了一個工廠類屬性,而這個工廠類屬性的實例值需要我們用Spring來生成,就OK了。舉一個實際的例子:
          在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開發環境下,我們找到
          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的集合,把這個結合作為結果集應用到ADF BC中。

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

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


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


          網站導航:
           
          主站蜘蛛池模板: 嵩明县| 美姑县| 博白县| 确山县| 固阳县| 自贡市| 红河县| 新龙县| 井陉县| 会同县| 苍溪县| 荔波县| 呼图壁县| 滦南县| 武清区| 历史| 孝义市| 阜城县| 舟曲县| 华阴市| 叙永县| 大田县| 石林| 大埔县| 济南市| 娱乐| 海丰县| 邯郸县| 徐闻县| 碌曲县| 新密市| 靖边县| 牙克石市| 汶川县| 青田县| 进贤县| 雷州市| 横山县| 临潭县| 会宁县| 莎车县|