<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    表現層、持久層、業務層

    為了實現web層(struts)和持久層(Hibernate)之間的松散耦合,我們采用業務代表(Business Delegate)和DAO(Data Access Object)兩種模式。DAO模式為了減少業務邏輯和數據訪問邏輯之間的耦合,當一個持久曾框架被應用時,該模式將會減少業務對象和該框架之間的耦合,這樣我們可以不修改業務對象而選擇不同的持久層框架的實現。實際上在DAO模式中包含兩種結構模式:橋(Bridge)模式和適配器(Adaptor)模式。?

    對表現層,我們使用 Struts ;業務層使用 Spring ;對于持久層我們使用的是 Hibernate 。你盡可以取代這里的某個框架而使用你喜歡的框架已達到同樣的效果。下圖顯示了框架被整合起來時,從最高層次看到的視圖。

    clip_image001_0007.gif

    應用層

    ??? 許多設計良好的web應用,可以被按職責分為四層。這些層次是表現層、持久層、業務層、和領域模型層。每一個層次都有其獨特的職責,不能把各自的功能與其它層次相混合。每一個應用層都應該和其它層隔離開來,但允許使用接口在層間進行通信。我們開始來看看每個層,并討論一下它們各自都應該提供什么和不應該提供什么。

    表現層

    ??? 一個典型的web 應用的末端是表現層。許多Java 開發者都知道Struts提供了什么東西。然而,太多時候,耦合代碼比如業務邏輯被放進org.apache.struts.Action中。所以,我們先總結一下Struts之類的框架應該提供什么。下面就是Struts 的職責所在:

    1. 管理用戶的請求和響應
    2. 提供一個控制起來將調用委托到業務邏輯和其他上游處理
    3. 將來自于拋出例外的其他層的例外處理到Struts Action 中
    4. 組裝可以在視圖中表現的模型對象
    5. 執行UI 校驗

    下面是一些經常可以使用Struts進行編碼但是不應該和表現層關聯的事情:

    1. 直接和數據庫交互,比如JDBC 調用
    2. 與應用相關的業務邏輯和校驗
    3. 事務管理

    在表現層中引入這些類型的代碼將導致類型耦合和維護負擔。

    持久層

    ??? 一個典型Web應用的另一端是持久層。這也是應用中最容易很快失控的地方。開發者通常低估了自己構建自己的持久層框架的挑戰。一個定制的,內部開發的持久層不僅需要大量的開發時間,并且通常缺乏功能和難以管理。目前有許多解決這些問題的開源對象關系映射 (ORM) 框架。特別地,Hibernate 框架就允許Java中的對象-關系的持久性和查詢服務。Hibernate 對已經熟悉了SQL 和JDBC API的Java開發者來或具有中度的學習曲線。Hibernate 的持久對象基于POJO和Java群集(collections)。此外,使用Hibernate 不和你的IDE接口。下面列出了你需要在持久性框架中編寫的代碼類型:

    1. 查詢關系信息到對象中。Hibernate是通過稱為HQL的OO查詢語言,或者使用更有表現能力的規則API,來完成這個工作的。除了使用對象而不是表,使用字段而不是列的方式,HQL非常類似于 SQL。也有一些新的特定的HQL 語言特征需要學習;但是,它們是很容易理解和良好編寫的。HQL是一種用于查詢對象的自然語言,而對象,只需要很少的學習曲線吧。.
    2. 存儲、更新和刪除存儲在數據庫中的信息
    3. 高級的對象關系映射框架比如Hibernate支持大部分主流SQL數據庫,它們支持父/子關系,事務,繼承和多態。

    下面是應該在持久層避免的一些事情:

    1. 業務邏輯應該置于應用的更高層中。這里只允許數據訪問方法。
    2. 不應該使持久邏輯和表現邏輯耦合。避免表現組件如JSP或者基于servlet的類中的邏輯直接和數據訪問進行通信。通過將持久性邏輯隔離在其自己的層中,應用將具有更加靈活的修改性而不影響到其他層的代碼。例如, Hibernate可以使用其他持久框架和API代替,而不需要修改其它層中的代碼。

    業務層應該負責下面的問題:

    1. 處理應用的業務邏輯和業務校驗
    2. 管理事務
    3. 允許與其他層進行交互的接口
    4. 管理業務級對象之間的依賴性
    5. 加入了表現和持久層之間的靈活性,以便它們不需要彼此進行直接通信
    6. 從表現層暴露上下文給業務層以獲得業務服務
    7. 管理從業務層到表現層的實現

    posted on 2007-04-08 03:17 金家寶 閱讀(24126) 評論(6)  編輯  收藏 所屬分類: 其他輔助基礎

    評論

    # re: 表現層、持久層、業務層 2007-04-25 09:00 henry

    哇塞,寫的不錯啊。  回復  更多評論   

    # re: 表現層、持久層、業務層 2007-12-13 16:22 yatata

    謝謝作者的文章  回復  更多評論   

    # re: 表現層、持久層、業務層 2009-10-21 14:12 kqogje

    能不能舉例說下啊,比如說用戶注冊模塊,哪些是業務層要做的工作,哪些是持久層要做的工作?  回復  更多評論   

    # re: 表現層、持久層、業務層 2012-11-09 11:30 dont

    小提示一下,第一段中“當一個持久曾框架被應用時,”錯別字“曾”...繼續學習中  回復  更多評論   

    # re: 表現層、持久層、業務層 2014-05-25 11:06 美惠寶999

    能舉例說明就更好了  回復  更多評論   

    # re: 表現層、持久層、業務層 2014-07-23 16:26 打了個

    搭搭撒撒  回復  更多評論   

    主站蜘蛛池模板: 少妇人妻偷人精品免费视频 | 免费看男人j放进女人j免费看| 久青草国产免费观看| 成人久久久观看免费毛片| 中文在线观看免费网站| 蜜桃成人无码区免费视频网站 | 99久久精品免费视频| 国产成人精品免费直播| 亚洲精品动漫人成3d在线| 亚洲无人区午夜福利码高清完整版| 亚洲av日韩av不卡在线观看 | 水蜜桃视频在线观看免费| 成在线人视频免费视频| 无码免费午夜福利片在线| 国产成人3p视频免费观看| 久久久久亚洲Av无码专| 亚洲日韩国产欧美一区二区三区| 免费一级做a爰片久久毛片潮| 亚欧免费视频一区二区三区| 午夜男人一级毛片免费| 青青青国产色视频在线观看国产亚洲欧洲国产综合| 亚洲国产精品无码久久九九| 亚洲第一成年男人的天堂| 国产成人综合亚洲| 久久国产精品免费专区| 人禽杂交18禁网站免费| 久久精品国产亚洲一区二区三区| 久久久亚洲欧洲日产国码二区| 免费夜色污私人影院网站| 人禽杂交18禁网站免费| 亚洲综合激情九月婷婷| 午夜亚洲乱码伦小说区69堂| 99久久99这里只有免费费精品| 日本不卡视频免费| 亚洲AV午夜成人片| 亚洲一区二区无码偷拍 | 亚洲阿v天堂在线2017免费| 69av免费视频| 亚洲va久久久噜噜噜久久男同| 人成电影网在线观看免费| 日韩免费在线观看|