18.7.22
dao、service瑰煎、controller铺然、model、entity酒甸。
*:dao用于操作數(shù)據(jù)庫魄健,針對(duì)表進(jìn)行增刪改查最基礎(chǔ)的操作,完全根據(jù)與數(shù)據(jù)庫一一對(duì)應(yīng)的Entity的要求來查詢數(shù)據(jù)插勤。dao層只是負(fù)責(zé)和數(shù)據(jù)庫打交道沽瘦。
*:service利用dao進(jìn)行業(yè)務(wù)上的處理,主要是展現(xiàn)需要開放出去的接口农尖,一個(gè)service應(yīng)當(dāng)只調(diào)用自己對(duì)應(yīng)的dao析恋,如果需要調(diào)用其他實(shí)體的操作,需要將其他實(shí)體的service引入來使用卤橄。
*:controller做一些service前后的數(shù)據(jù)處理绿满,利用service完成更高的操作。作為View和Model中間層窟扑。
*:model作為MVC的M是為view服務(wù)的喇颁,傳遞和接收view的數(shù)據(jù)。model與數(shù)據(jù)庫表的字段映射嚎货,并且也添加前端需要的字段橘霎。畢竟model是為view服務(wù)的。而為了簡(jiǎn)潔就沒有重復(fù)使用entity與數(shù)據(jù)庫表一一對(duì)應(yīng)殖属。
*:entity為實(shí)體類姐叁,與數(shù)據(jù)庫表一一對(duì)應(yīng)。一般開發(fā)使用model代替了entity。
*:domain怎么回事木有十分清楚外潜。
我們的系統(tǒng)是domain屬于model下面原环,因?yàn)閙odel為view服務(wù),而domain則根據(jù)各個(gè)具體的模塊細(xì)分处窥。
*:VO相當(dāng)于model嘱吗,是視圖對(duì)象,專門用于組織view需要的屬性滔驾。
參考:https://www.cnblogs.com/printN/p/6901774.html
2谒麦、最近公司做項(xiàng)目時(shí),遇到問題哆致,在保存場(chǎng)景時(shí)需要一起保存其五類屬性至各自屬性表中绕德,需要決定在場(chǎng)景的service模塊調(diào)用屬性模塊的service還是dao,經(jīng)查詢,最終調(diào)用service層方法解決摊阀。參考網(wǎng)上文檔內(nèi)容如下:
”按我的經(jīng)驗(yàn)耻蛇,service a不能調(diào)用b的dao層,只能調(diào)用b的service層實(shí)現(xiàn)業(yè)務(wù)驹溃。
因?yàn)閎的service是對(duì)dao的CRUD封裝城丧,如果是單庫的話service或許只是dao的代理,但如果有cache豌鹤,跨庫查詢那顯然調(diào)用dao b是不合理的亡哄,可以類比為視頻系統(tǒng)調(diào)用用戶系統(tǒng),視頻系統(tǒng)不關(guān)心用戶系統(tǒng)的dao層實(shí)現(xiàn)機(jī)制布疙,只要通過service層查詢到用戶信息即可蚊惯。
另外你說的業(yè)務(wù)依賴確實(shí)有這樣的困惑,但本身java類之間通訊就是有依賴關(guān)系的灵临,或許如果service a業(yè)務(wù)依賴的service b業(yè)務(wù)太過于復(fù)雜時(shí)你可以再次抽象出service b的另外一個(gè)interface就ok了截型。
個(gè)人建議不同的模塊之間還是service飛來飛起就好了,不要搞到模塊A的service調(diào)用模塊B的dao儒溉。簡(jiǎn)單的說就是為了遵循SOA宦焦,代碼結(jié)構(gòu)更清晰。長(zhǎng)遠(yuǎn)點(diǎn)說以后不同模塊之間拆分項(xiàng)目/獨(dú)立成jar包也是好的顿涣。舉個(gè)例子波闹, 項(xiàng)目里面有兩個(gè)模塊:賬號(hào)相關(guān)模塊和消息相關(guān)模塊。某個(gè)用戶登錄需要用到賬號(hào)模塊獲取用戶信息(AccountService.getAccountByxxx)涛碑,而且拉用戶未讀消息(messageService.getUnRead)精堕。用戶登錄這個(gè)行為可以用一個(gè)facade包裝"賬號(hào)模塊獲取用戶信息" & "拉用戶未讀消息"。搞一個(gè)UserBehaviorFacede就是了蒲障。其次歹篓,如果像題主這種問題瘫证, 是不是用一個(gè)facade包裝一下, 而不是模塊調(diào)來調(diào)去庄撮?”
參考:https://blog.csdn.net/arenn/article/details/76608564
http://www.zuidaima.com/question/2378883477212160.htm
https://www.zhihu.com/question/27139263