摘要:介紹了ADF的特點和結構,描述了使用ADF開發J2EE應用程序的過程。
關鍵詞:ADF ORACLE J2EE MVC
ADF簡介
ADF(Application Development Framework)是Oracle公司為簡化J2EE程序開發的復雜性專門開發的一種解決方案,ADF通過減少實現設計模式和應用程序框架的代碼量,簡化了J2EE的研發難度。其優點主要體現在以下四個方面:
(1) 開發環境:大部分J2EE框架都沒有與之配套的開發工具,ORACLE為ADF提供了JDEVELOPER開發工具,它和ADF實現了完美的結合,方便了程序的開發。
(2) 平台獨立:ADF能夠運行在任何符合J2EE標准的應用服務器上。
(3) 技術選擇:對於應用程序的不同層,開發人員可以使用自己擅長的技術進行開發。
(4) 端到端的解決方案:ADF不只關注應用程序的某一層,而是對應用程序的每一層,都提供了完整的解決方案。
Oracle ADF的架構
Oracle ADF的架構是基於MVC設計模式的,其架構如圖1所示。從圖1我們可以看出,ADF把應用程序分成了四層,下面我們分別介紹:
1)Business Service 層
Business Service 層包括三個小層(見圖1),分別是持久層(Persistent Business Objects),數據訪問層(Data Access)和接口層(ADF Application Module)。這三層建立的順序是這樣的,先建立持久層的實體對象(Entity Object),然後建立數據訪問層的視圖對象(ViewObject),最後建立接口層。其中建立持久層的實體對象主要是和數據庫的表或者同義詞對象建立關聯,數據訪問層的視圖對象(ViewObject)是基於實體層的實體對象建立的,主要是進行數據庫的訪問,而接口層是整個Business Service 層和Model層的接口,在數據訪問層建立的視圖對象需要注冊到接口層中,這樣在Model層中才可以訪問。
2)Model 層
該層包括兩部分(見圖1),分別是ADF Bindings和ADF DataControl,其中ADF Bindings是ADF提供的一種綁定技術,ADF DataConrol 是指我們已經在接口層中注冊的視圖對象(ViewObject)。這一層在實際開發中基本不需要開發者做太多的工作。
3)Controller 層
ADF 在Controller層中擴展了APACHE基金會的STRUTS框架,它為Struts提供了一個頁面流轉圖,以簡化應用程序的開發。開發者可以簡單地拖拽Struts的組件到這個圖表中,這個圖表會自動地同步更新Struts-config.xml文件,其中我們最常用的是DataPage組件,該組件的作用主要是建立一個頁面,並且自動為其建立一個DataForwardAction,如果我們有一些自定義的方法,也可以寫一個Action,然後覆蓋DataForwardAction。
4)View 層
在View層可以采用ORACLE 的UIX 技術,它裡面定義了大量功能強大的組件。Oracle Jdeveloper 在View 層提供了一個可視化的布局編輯器,開發者可以使用組件面板向應用程序添加可視化的組件,並可以運用屬性編輯器(Property Inspector)來定義這些組件的屬性。可視化的編輯器是和源碼同步的,所以開發者可以選擇自己喜歡的開發方式。
圖1 Oracle ADF 架構圖
ADF應用開發過程
下面給大家簡單介紹一下ADF具體的實現過程,開發工具我們選擇Oracle的Jdeveloper10g,因為在目前的各種開發工具中,Jdeveloper是對ADF這個框架支持最好的工具,它內部直接集成了ADF開發時所需要的各種工具,給開發帶來很大的方便。我們以《某合同管理系統中的設備招投標》模塊為例。
第一步:在Jdeveloper中,創建一個工作區,工作區的名字取為TestProject,在應用程序模板一項中,選擇WEB APPLICATION(DEFAULT),確認後的工作區如圖2所示,按照我們上面講述的ADF的架構,我們先建立Business Service層的持久層對象,在Model這個工程上邊,右鍵單擊新建,然後選擇Business Tier 下的Business Component ,選擇EntityObject,然後出現圖3;schema Object是讓我們選擇數據庫中的表或者同義詞等對象,name 是我們建立的持久層對象的名字,這裡我們把name命名為CdtEquipmentEO,package指定這個對象放在什麼包下面。
圖2 workspace TestProject建立時的情況
圖3 EntityObject 向導第一步
第二步:建完持久層的實體對象後,我們就需要建立數據訪問層的視圖對象(ViewObject)。右鍵單擊Model,新建選擇ViewObject出現圖4,左邊是供我們選擇已經存在的持久層的實體對象(EntityObject),這裡面我們選擇剛建好的CdtEquipmentEO這個實體對象。
圖4 ViewObject向導第二步
第三步:需要建立接口層(ApplicationModule),將數據訪問層的視圖對象(ViewObject)注冊到ApplicationModule中,如圖5所示,我們選擇CdtEquipmentView1這個視圖對象,並把它添加到AppModul1中。
圖5 ApplicationModule 建立向導
第四步:按照ADF架構,Model層我們基本不需要作什麼工作,那麼我們下面開始建立Controller層,首先需要建立DataPage,可以是UIX格式的也可以是JSP,這裡我們用UIX格式。在Struts-config.xml中,從右側的component中,可以直接選擇DataPage,拖拽過來,listEquipment是我們給定的名字。
圖6 Struts_config.xml截面圖
第五步:建完Controller層,需要建立展現層(View),在listEquipment.uix頁面中設置頁面布局,可以對DataControl中的View進行拖拽,如圖7所示,我們選擇Data Control 面板中的CdtEquipmentView1,這就是我們剛才建立的View,下面的拖拽類型選擇只讀表就可以了。
圖7 listEquipment.xml截面圖
第六步:我們單擊listEquipment.uix這個文件,選擇運行(圖8示),就可以直接得出所有設備的數據了,運行的效果如圖9所示。
圖8 struts_config.xml截面圖
圖9 運行效果圖
結論
在Jdeveloper10g中結合ADF框架,使開發人員能夠從零開始構建J2EE應用程序和WEB服務。因為Oracle ADF的高度結合性,以及它裡面提供的優秀技術,使得開發應用變得十分簡單方便,從而大大提高了應用程序的開發效率,具有很高的應用價值。