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

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

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

    Denis's Java Library

    The only documentation is the code itself

    Spring中的DAO和Service

        我們開發程序的目的是為了完成業務功能, 理想的情況下程序中的每一條語句都應該是與業務直接相關的, 例如程序中不應該出現連接數據庫, 讀取某個字段等純技術性的操作, 而應該是得到用戶A的基本信息等具有業務含義的操作. dao(data access object)層存在的意義在于將與數據持久化相關的函數調用剝離出去, 提供一個具有業務含義的封裝層. 原則上說, dao層與utils等幫助類的功能非常類似, 只是更加復雜一些, 需要依賴更多的對象(如DataSource, SessionFactory)等. 如果不需要在程序中屏蔽我們對于特定數據持久層技術的依賴, 例如屏蔽對于Hibernate的依賴, 在dao層我們沒有必要采用接口設計. 一些簡單的情況下我們甚至可以取消整個dao層, 而直接調用封裝好的一些通用dao操作函數, 或者調用通用的EntityDao類等.
        程序開發的過程應該是從業務對象層開始的, 并逐步將純技術性的函數調用剝離到外部的幫助類中, 同時我們會逐漸發現一些業務操作的特定組合也具有明確的含義, 為了調用的方便, 我們會把它們逐步補充到service層中. 在一般的應用中, 業務邏輯很難穩定到可以抽象出接口的地步, 即一個service接口不會對應于兩個不同的實現, 在這種情況下使用接口往往也是沒有必要的.
        
        在使用spring的情況下原則上應該避免使用getBean的調用方式, 應該盡量通過注入來獲得依賴對象, 但有時我們難免需要直接獲取業務對象, 在不使用接口的情況下可以采用如下方式

        class TaskService{
            public static TaskService getInstance(){
                return (TaskService)BeanLoader.getBean(TaskService.class);
            }
        }

        在程序中我們可以直接使用TaskService.getInstance()來得到TaskService對象.通過命名規范的約定, 我們可以從類名推導出spring配置文件中的對象名, 因而不需要使用一個額外的硬編碼字符串名.

    posted on 2006-02-05 17:17 DenisLing 閱讀(1620) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲综合AV在线在线播放| 亚洲精品A在线观看| 亚洲理论片在线中文字幕| 另类免费视频一区二区在线观看| 亚洲伊人久久成综合人影院| sss日本免费完整版在线观看| 国产zzjjzzjj视频全免费 | 99re视频精品全部免费| 亚洲阿v天堂在线| a毛片免费观看完整| 亚洲AV无码久久精品色欲| 无码国产精品一区二区免费vr | 亚洲激情中文字幕| 57pao国产成永久免费视频| 亚洲精品韩国美女在线| 成人免费视频观看无遮挡| 狠狠综合亚洲综合亚洲色| 亚洲精品乱码久久久久久蜜桃 | 国产一卡二卡≡卡四卡免费乱码| 亚洲AV色欲色欲WWW| 亚洲日本一区二区一本一道 | 四虎永久在线精品免费观看视频 | 精品国产污污免费网站入口| 人人狠狠综合久久亚洲婷婷| 亚洲免费观看网站| 亚洲AV女人18毛片水真多| 亚洲一区精品无码| 99国产精品永久免费视频 | 久久国产乱子伦精品免费午夜 | 亚洲无mate20pro麻豆| 免费在线观看亚洲| 免费在线看黄网站| 亚洲一级特黄特黄的大片| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 免费黄色毛片视频| 国产免费久久精品丫丫| 亚洲成A∨人片在线观看无码| 国产高清在线免费| 久久免费福利视频| 亚洲jizzjizz少妇| 亚洲国产一区二区a毛片|