java 如何領(lǐng)悟Java三大框架?
如何領(lǐng)悟Java三大框架?Hibernate:Hibernate主要通過ORM(對象關(guān)系映射)和框架配置文件來實現(xiàn)。讓實體類和數(shù)據(jù)庫表一一對應。讓實體類先對應數(shù)據(jù)庫表,讓實體類的屬性逐一對應數(shù)據(jù)庫表中
如何領(lǐng)悟Java三大框架?
Hibernate:
Hibernate主要通過ORM(對象關(guān)系映射)和框架配置文件來實現(xiàn)。讓實體類和數(shù)據(jù)庫表一一對應。讓實體類先對應數(shù)據(jù)庫表,讓實體類的屬性逐一對應數(shù)據(jù)庫表中的字段。這樣,就不需要操作數(shù)據(jù)庫表,而需要操作表中相應的實體類對象。以實現(xiàn)相應的添加、刪除、修改和查詢操作。
Mybatis不是一個完整的ORM框架。mybatis的SQL需要開發(fā)人員自己編寫,但是它也提供了輸入和輸出的自動映射,因此可以認為它是一個半自動的ORM框架。Mybatis可以靈活配置SQL語句通過XML或注解運行,映射Java對象和SQL語句生成最終SQL,最后映射SQL執(zhí)行結(jié)果生成Java對象,對于客戶需求的變化更為靈活。但靈活性的前提是mybatis不能獨立于數(shù)據(jù)庫。如果需要實現(xiàn)支持多個數(shù)據(jù)庫的軟件,則需要自定義多組SQL映射文件,這是一個繁重的工作負載。Hibernate具有很強的對象關(guān)系映射能力和良好的數(shù)據(jù)庫無關(guān)性。
Struts2:
Struts2處理請求是為每個請求創(chuàng)建一個單獨的操作類。action類中的字段屬性參數(shù)用作輸入和輸出參數(shù),IOC用于依賴注入。它是基于類的開發(fā)。
類似地,SpringMVC使用輸入請求和響應作為參數(shù),并返回modelandview,這是一種單例模式和基于方法的模式。
Spring:Spring的核心概念是di(依賴注入)和AOP(面向方面編程)。Di也稱為IOC(控制反轉(zhuǎn))。使用spring,可以通過IOC從spring容器中獲取所有對象。每個物體通過彈簧注入到相應的位置。通過IOC,spring可以在下一個對象注入(DI)之前創(chuàng)建對象,因此DI依賴于IOC。
Service層和Dao層真的有必要每個類都加上接口嗎?
這主要取決于您的項目:
例如,如果項目中使用hibernate,以后可能會切換到mybatis,那么Dao需要使用該接口。這不會影響上層代碼的更改。
另一個例子是,項目是一個單一的應用程序。任何代碼修改都需要重新編譯整個項目,因此不需要接口。如果項目是由模塊編譯和部署的,那么可以使用接口解耦。假設(shè)修改了Dao,只需要重新編譯和部署Dao模塊,而不影響上層模塊。
此外,如果項目團隊中有許多新手,簡單的代碼結(jié)構(gòu)可能更合適。復雜項目結(jié)構(gòu)的學習成本較高。
如果工程進度非常緊迫,我們可以用簡單粗暴的方式用經(jīng)濟成本來說明原因。
使用接口的成本是不使用接口的成本(包括后續(xù)維護成本)。
如果項目變化很大,部署了模塊,項目不急,使用接口的成本比不使用接口的成本低,雖然早期不使用接口似乎更簡單;相反,不使用接口的成本低,而且連框架都不能用~
畢竟工具是提高效率的,那你為什么不能和自己相處呢!