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