Java面試中常見的開源框架的面試問題(一)
此次整理的面試問題一共兩篇博文,因筆者能力所限,整理不夠完善的地方希望大家給予寶貴的修改意見。
1、hibernate和mybatis的區別。
相同點:
1)都屬於ORM框架
2)都是對jdbc的包裝
3)都屬於持久層的框架
不同點:
1)hibernate是面向物件的,mybatis是面向sql的;
2)hibernate全自動的orm,mybatis是半自動的orm;
3)hibernate查詢對映實體物件必須全欄位查詢,mybatis可以不用;
4)hibernate級聯操作,mybatis則沒有;
5)hibernate編寫hql查詢資料庫大大降低了物件和資料庫的耦合性,mybatis提供動態sql,需要手寫sql,與資料庫之間的耦合度取決於程式設計師所寫的sql的方法,所以hibernate的移植性要遠大於mybatis。
6)hibernate有方言誇資料庫,mybatis依賴於具體的資料庫。
7)hibernate擁有完整的日誌系統,mybatis則相對比較欠缺。
舉個例子來形容下:
hibernate就好比是一款智慧機器人,可以給使用者帶來很大的方便,但是要研發出來這款機器人需要的成本很高(包括學習以及熟練度);mybatis就好比是一套機械工具,使用起來很簡單方便,但是如何使用取決於使用者。
2、spring框架中需要引用那些jar包,以及這些jar包的用途。
spring.jar是包含完整發布的單個jar包。除了spring.jar檔案外還包含13個獨立的jar包,各自對應spring不同的元件,在使用時可以根據實際情況選擇需要的jar包,不必引入整個spring.jar包中所有的檔案
1)spring-core.jar:包含spring框架基本的核心工具類,其他元件都要使用這個包裡面的類,是其他元件的核心;
2)spring-bean.jar:是所有的應用都要用到的,包含訪問配置檔案、建立和管理bean以及進行IoC和DI操作所需的相關類;
3)spring-aop.jar:包含使用AOP特性時所需的類;
4)spring-context.jar:為spring核心提供了大量擴充套件;
5)spring-dao.jar:包含spring DAO、spring Transaction進行資料訪問的所有類;
6)spring-hibernate.jar:包含spring對hibernate 2以及hibernate 3進行封裝的所有類;
7)spring-jdbc.jar:包含spring對JDBC資料庫訪問進行封裝的所有類;
8)spring-orm.jar:包含多DAO特性集進行了擴充套件;
9)spring-remoting.jar:包含支援EJB、JMS、遠端呼叫Remoting方面的類;
10)spring-support.jar:包含支援快取Cache、JAC、JMX、郵件服務、任務計劃Scheduling方面的類;
11)spring-web.jar:包含web開發時,用到spring框架時所需的核心類;
12)spring-webmvc.jar:baohan Spring MVC框架相關的所有類;
13)spring-mock.jar:包含spring一整套mock類來輔助應用的測試。
3、spring中BeanFactory和ApplicationContext的聯絡和區別。
BeanFactory是spring中較為原始的Factory,無法支援spring的許多外掛,如AOP功能、Web應用等。
ApplicationContext介面是通過BeanFactory介面派生而來的,除了具備BeanFactory介面的功能外,還具備資源訪問、事件傳播、國際化訊息訪問等功能。
總體區別如下:
1)使用ApplicationContext,配置bean預設配置是singleton,無論是否使用,都會被例項化。優點是預先載入,缺點是浪費記憶體;
2)使用BeanFactory例項化物件時,配置的bean等到使用的時候才會被例項化。優點是節約記憶體,缺點是速度比較慢,多用於移動裝置的開發;
3)沒有特殊要求的情況下,應該使用ApplicationContext完成,ApplicationContext可以實現BeanFactory所有可實現的功能,還具備其他更多的功能。