學(xué)校簡(jiǎn)介| 精品課程| 教師團(tuán)隊(duì)| 學(xué)校環(huán)境| 新聞動(dòng)態(tài)
文章來(lái)源:廣州千鋒教育 已幫助:1077人
1. hibernate和mybatis的區(qū)別?
相同點(diǎn):
1)都屬于ORM框架
2)都是對(duì)jdbc的包裝
3)都屬于持久層的框架
不同點(diǎn):
1)hibernate是面向?qū)ο蟮模琺ybatis是面向sql的;
2)hibernate全自動(dòng)的orm,mybatis是半自動(dòng)的orm;
3)hibernate查詢映射實(shí)體對(duì)象必須全字段查詢,mybatis可以不用;
4)hibernate級(jí)聯(lián)操作,mybatis則沒(méi)有;
5)hibernate編寫(xiě)hql查詢數(shù)據(jù)庫(kù)大大降低了對(duì)象和數(shù)據(jù)庫(kù)的耦合性,mybatis提供動(dòng)態(tài)sql,需要手寫(xiě)sql,與數(shù)據(jù)庫(kù)之間的耦合度取決于程序員所寫(xiě)的sql的方法,所以hibernate的移植性要遠(yuǎn)大于mybatis。
6)hibernate有方言夸數(shù)據(jù)庫(kù),mybatis依賴于具體的數(shù)據(jù)庫(kù)。
7)hibernate擁有完整的日志系統(tǒng),mybatis則相對(duì)比較欠缺。
2. MyBatis的優(yōu)點(diǎn)?
1、基于SQL語(yǔ)句編程,相當(dāng)靈活,不會(huì)對(duì)應(yīng)用程序或者數(shù)據(jù)庫(kù)的現(xiàn)有設(shè)計(jì)造成任何影響,SQL寫(xiě)在XML里,解除sql與程序代碼的耦合,便于統(tǒng)一管理;提供XML標(biāo)簽,支持編寫(xiě)動(dòng)態(tài)SQL語(yǔ)句,并可重用。
2、與JDBC相比,減少了50%以上的代碼量,消除了JDBC大量冗余的代碼,不需要手動(dòng)開(kāi)關(guān)連接;
3、很好的與各種數(shù)據(jù)庫(kù)兼容(因?yàn)镸yBatis使用JDBC來(lái)連接數(shù)據(jù)庫(kù),所以只要JDBC支持的數(shù)據(jù)庫(kù)MyBatis都支持)。
4、能夠與Spring很好的集成;
5、提供映射標(biāo)簽,支持對(duì)象與數(shù)據(jù)庫(kù)的ORM字段關(guān)系映射;提供對(duì)象關(guān)系映射標(biāo)簽,支持對(duì)象關(guān)系組件維護(hù)。
3.MyBatis框架的缺點(diǎn)?
(1)SQL語(yǔ)句的編寫(xiě)工作量較大,尤其當(dāng)字段多、關(guān)聯(lián)表多時(shí),對(duì)開(kāi)發(fā)人員編寫(xiě)SQL語(yǔ)句的功底有一定要求。
(2)SQL語(yǔ)句依賴于數(shù)據(jù)庫(kù),導(dǎo)致數(shù)據(jù)庫(kù)移植性差,不能隨意更換數(shù)據(jù)庫(kù)。
4. SpringMVC工作流程?
1、用戶發(fā)送請(qǐng)求至前端控制器DispatcherServlet
2、DispatcherServlet收到請(qǐng)求調(diào)用HandlerMapping處理器映射器。
3、處理器映射器根據(jù)請(qǐng)求url找到具體的處理器,生成處理器對(duì)象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet。
4、DispatcherServlet通過(guò)HandlerAdapter處理器適配器調(diào)用處理器
5、執(zhí)行處理器(Controller,也叫后端控制器)。
6、Controller執(zhí)行完成返回ModelAndView
7、HandlerAdapter將controller執(zhí)行結(jié)果ModelAndView返回給DispatcherServlet
8、DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器
9、ViewReslover解析后返回具體View
10、DispatcherServlet對(duì)View進(jìn)行渲染視圖(即將模型數(shù)據(jù)填充至視圖中)。
11、DispatcherServlet響應(yīng)用戶
5.MyBatis框架使用的場(chǎng)合?
(1)MyBatis專注于SQL本身,是一個(gè)足夠靈活的DAO層解決方案。
(2)對(duì)性能的要求很高,或者需求變化較多的項(xiàng)目,如互聯(lián)網(wǎng)項(xiàng)目,MyBatis將是不錯(cuò)的選擇。
6.Spring中beanFactory和ApplicationContext的和區(qū)別?
BeanFactory是spring中較為原始的Factory,無(wú)法支持spring的許多插件,如AOP功能、Web應(yīng)用等。
ApplicationContext接口是通過(guò)BeanFactory接口派生而來(lái)的,除了具備BeanFactory接口的功能外,還具備資源訪問(wèn)、事件傳播、國(guó)際化消息訪問(wèn)等功能。
總體區(qū)別如下:
1)使用ApplicationContext,配置bean默認(rèn)配置是singleton,無(wú)論是否使用,都會(huì)被實(shí)例化。優(yōu)點(diǎn)是預(yù)先加載,缺點(diǎn)是浪費(fèi)內(nèi)存;
2)使用BeanFactory實(shí)例化對(duì)象時(shí),配置的bean等到使用的時(shí)候才會(huì)被實(shí)例化。優(yōu)點(diǎn)是節(jié)約內(nèi)存,缺點(diǎn)是速度比較慢,多用于移動(dòng)設(shè)備的開(kāi)發(fā);
3)沒(méi)有特殊要求的情況下,應(yīng)該使用ApplicationContext完成,ApplicationContext可以實(shí)現(xiàn)BeanFactory所有可實(shí)現(xiàn)的功能,還具備其他更多的功能。
7. SpringIOC注入的幾種方式?
構(gòu)造器注入
set方法注入
接口注入
8.攔截器與過(guò)濾器的區(qū)別?
1、攔截器是基于java的反射機(jī)制的,而過(guò)濾器是基于函數(shù)回調(diào)
2、攔截器不依賴與servlet容器,過(guò)濾器依賴與servlet容器。
3、攔截器只能對(duì)action請(qǐng)求起作用,而過(guò)濾器則可以對(duì)幾乎所有的請(qǐng)求起作用。
4、攔截器可以訪問(wèn)action上下文、值棧里的對(duì)象,而過(guò)濾器不能訪問(wèn)。
5、在action的生命周期中,攔截器可以多次被調(diào)用,而過(guò)濾器只能在容器初始化時(shí)被調(diào)用一次
9. SpringIOC是什么?
Spring IOC 負(fù)責(zé)創(chuàng)建對(duì)象,管理對(duì)象(通過(guò)依賴注入(DI),裝配對(duì)象,配置對(duì)象,并且管理這些對(duì)象的整個(gè)生命周期。
10. AOP有哪些實(shí)現(xiàn)方式?
實(shí)現(xiàn) AOP 的技術(shù),主要分為兩大類:
靜態(tài)代理 - 指使用 AOP 框架提供的命令進(jìn)行編譯,從而在編譯階段就可生成 AOP 代理類,因此也稱為編譯時(shí)增強(qiáng);
編譯時(shí)編織(特殊編譯器實(shí)現(xiàn))
類加載時(shí)編織(特殊的類加載器實(shí)現(xiàn))。
動(dòng)態(tài)代理 - 在運(yùn)行時(shí)在內(nèi)存中“臨時(shí)”生成 AOP 動(dòng)態(tài)代理類,因此也被稱為運(yùn)行時(shí)增強(qiáng)。
JDK 動(dòng)態(tài)代理、CGLIB
學(xué)校首頁(yè)| 學(xué)校簡(jiǎn)介| 課程列表| 學(xué)校新聞| 學(xué)校相冊(cè)| 教師團(tuán)隊(duì)| 聯(lián)系我們
廣州千鋒教育課程請(qǐng)咨詢:
滬ICP備18048269號(hào)-1
電子營(yíng)業(yè)執(zhí)照
教育
全國(guó)教育網(wǎng)站
企業(yè)信用等級(jí)AA級(jí)
合作/版權(quán)/投訴
本頁(yè)信息由注冊(cè)用戶(機(jī)構(gòu)和個(gè)人)自行發(fā)布或提供,所有內(nèi)容僅供參考,任何關(guān)于對(duì)該用戶的推薦都不能替代您的考察核實(shí),本站不承擔(dān)該用戶發(fā)布/提供信息的行為或內(nèi)容所引起的法律責(zé)任