国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

java Service層和Dao層真的有必要每個類都加上接口嗎?

Service層和Dao層真的有必要每個類都加上接口嗎?簡單來說就是看情況。主要看你項目:變動情況以及架構人員項目情況比如,項目原來使用的hibernate,后續(xù)可能要切換為mybatis,那么dao

Service層和Dao層真的有必要每個類都加上接口嗎?

簡單來說就是看情況。

主要看你項目:

  • 變動情況
  • 以及架構
  • 人員
  • 項目情況

比如,項目原來使用的hibernate,后續(xù)可能要切換為mybatis,那么dao就需要使用接口。這就不會影響上層代碼的修改。

再比如,項目是個單體應用,任何代碼的修改都需要重新編譯整個項目,那可以不用接口。而如果項目是分模塊編譯部署的,那就可以使用接口解耦,假設dao有修改,只需要重新編譯部署dao模塊即可,不影響上層模塊。

再來,如果項目組新手較多,可能簡單的代碼結構更適合。復雜項目結構的學習成本要高。

假如,項目進度很急,可以使用簡單粗暴的方式先擼~

可以用經濟學上的成本來解釋原因。

經濟學上的成本定義是:你做一件事,所放棄的其它事情中,價值最大的那件事的價值就是你做這件事的成本。

你使用接口的成本就是你不使用接口所花費的成本(包括后續(xù)的維護成本)。

如果項目變動多、模塊部署、項目不急,那使用接口的成本就低于不使用接口的成本,雖然早期可能不用接口看起來更簡單;反之,則不用接口的成本低,甚至框架都可以不使用~

畢竟工具是為了提高效率的,何必和自己過不去呢!

如何領悟Java三大框架?

Hibernate:

Hibernate主要就是ORM(對象關系映射)由框架 配置文件實現(xiàn)的。讓實體類和數(shù)據(jù)庫表進行一一對應關系。讓實體類先和數(shù)據(jù)庫表對應,讓實體類屬性和數(shù)據(jù)庫表中字段一一對應。這樣就不需要操作數(shù)據(jù)庫表,而操作表中對應的實體類對象。以此來實現(xiàn)對應的增刪改查操作。

同樣對于dao層的框架還有Mybatis,Mybatis不是一個完全的ORM框架,MyBatis的sql需要開發(fā)人員自己編寫,但同時提供了輸入和輸出的自動映射,所以可以認為是半自動的ORM框架。Mybatis可以通過XML或注解方式靈活配置要運行的sql語句,并將java對象和sql語句映射生成最終執(zhí)行的sql,最后將sql執(zhí)行的結果再映射生成java對象,對于不斷變更的客戶需求更加靈活。但是靈活的前提是Mybatis無法做到數(shù)據(jù)庫無關性,如果需要實現(xiàn)支持多種數(shù)據(jù)庫的軟件則需要自定義多套sql映射文件,工作量大。而Hibernate對象關系映射能力強,數(shù)據(jù)庫無關性好。

Struts2:

Struts2處理請求是為每個請求都創(chuàng)建一個單獨的Action類,Action類當中的Field屬性參數(shù)作為輸入和輸出參數(shù)用IOC來依賴注入的方式,是基于類的開發(fā)。

同樣的SpringMVC則采用輸入Request和Reponse作為參數(shù),返回ModelAndView的方式,是單例的模式,且是基于方法的模式。

spring:

Spring最核心的概念就是DI(依賴注入)和AOP(面向切面編程),DI也稱為IoC(控制反轉)。有了Spring之后,通過IOC,所有的對象都可以從Spring容器中得到。每個對象由Spring注入到對應的地方。通過IoC先由Spring創(chuàng)建對象后,才能進行下一步對象注入(DI),所以說DI依賴IOC。