在做具有MVC結(jié)構(gòu)的B/S程序時,怎樣將這三層隔離開是十分關(guān)鍵的,一般用DAO封裝Hibernate來獲得對數(shù)據(jù)庫的具體操作,在這里我們可以為每一個需要建立O-R MAPPING的對象(通過Hibernate實現(xiàn)OR映射)實現(xiàn)一個DAO,然后通過這個DAO來獲得具體的數(shù)據(jù)庫操作,用DAO的好處是我們可以把對一個對象的操作集中在同一個DAO中,便于管理,另外向上層只提供了接口屏蔽了底層對數(shù)據(jù)庫的操作,通過hibernate,我們向上層直接提供建立了O-R MAPPING的OBJECT;同時在領(lǐng)域模型這一層,也就是M這一層,我們將一些業(yè)務(wù)邏輯(business logic)封裝進來,這里所指的M這一層通常也就是我們在Hibernate中所用到的plain objectS,就是用來建立O-R MAPPING所需要用到的與表對應(yīng)的OBJECTs,一般的領(lǐng)域模型都是由這些plain objectS構(gòu)成;這樣我們在控制層也就是C這一層只需要初始化DAO打開到持久層的通路,然后調(diào)用一些簡單的方法執(zhí)行業(yè)務(wù)邏輯,請注意這時候我們的業(yè)務(wù)邏輯已經(jīng)被封裝在領(lǐng)域模型這一層中了,這樣我們每一層都是相互獨立的,控制層C和展現(xiàn)層V都不和持久層所提供的接口有關(guān)系