軟件工程實踐者

          統(tǒng)計

          留言簿

          友情鏈結(jié)

          閱讀排行榜

          評論排行榜

          Oracle ADF和Spring的結(jié)合

          Oracle ADF(Application Developement Framework)是一套快速開發(fā)企業(yè)級J2EE的MVC框架. Oracle在Model層和業(yè)務(wù)服務(wù)層上提供的缺省實現(xiàn)對開發(fā)基于數(shù)據(jù)庫的應(yīng)用提供了極大的便利,尤其是它的ADF BC(Business components),這個微型的MVC框架提供了直接映射數(shù)據(jù)庫表的能力,結(jié)合View端的展現(xiàn)(Oracle 提供了桌面端Swing/JClient和Web端UIX的實現(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指定了一個工廠類屬性,而這個工廠類屬性的實例值需要我們用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開發(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 軟件工程實踐者 閱讀(1014) 評論(0)  編輯  收藏 所屬分類: 開源框架


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 东源县| 灵寿县| 定日县| 长泰县| 赫章县| 庐江县| 翁牛特旗| 深州市| 博罗县| 民乐县| 乌海市| 清新县| 文山县| 福贡县| 绥化市| 磐石市| 余江县| 蓬莱市| 济南市| 都昌县| 锦州市| 津南区| 峡江县| 阿巴嘎旗| 彩票| 册亨县| 和顺县| 疏附县| 霍城县| 吉首市| 凤阳县| 三江| 博罗县| 盐山县| 正宁县| 建始县| 辛集市| 宁海县| 宝丰县| 五家渠市| 石家庄市|