struts,spring,hibernate面試題總結

Q:Hibernate工作原理及爲什麼要用?

A:原理:

1 讀取並解析配置文件

2 讀取並解析映射文件,創建SessionFactory

3 打開Session

4 創建事務Transation

5 持久化操作

6 提交事務

7 關閉Session

8 關閉SessionFactory


爲什麼要用:

* 對JDBC訪問數據庫的代碼做了封裝,大大簡化了數據庫訪問層繁瑣的重複性代碼。

* Hibernate是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作

* Hibernate使用java反射機制,而不是字節碼增強程序來實現透明性。

* Hibernate的性能非常好,因爲它是個輕量級框架。映射的靈活性很出色。它支持各種關係數據庫,從一對一到多對多的各種複雜關係。


Q:Hibernate是如何延遲加載?

A:*Hibernate2延遲加載實現: a)實體對象 b)集合(Collection)

* Hibernate3提供了屬性的延遲加載功能

當Hibernate在查詢數據的時候,數據並沒有存在與內存中,當程序真正對數據的操作時,對象才存在與內存中,就實現了延遲加載,他節省了服務器的內存開銷,從而提高了服務器的性能。


QHibernate中怎樣實現類之間的關係?(如:一對多、多對多的關係)

A:類與類之間的關係主要體現在表與表之間的關係進行操作,它們都是對對象進行操作,我們程序中把所有的表與類都映射在一起,它們通過配置文件中的many-to-one,one-to-many,many-to-many

Q說下Hibernate的緩存機制

A:*內部緩存在Hibernate中又叫一級緩存,屬於應有事務級緩存

* 二級緩存:

a)應用及緩存

b)分佈式緩存

條件:數據不會被第三方修改、數據大小在可接受範圍、數據更新頻率低、同一數據被系統頻繁使用、非鍵數據

c)第三方緩存的實現


QHibernate的查詢方式

A:Sql,Criteria,object comptosition

Hql:

*屬性查詢

*參數查詢、命名參數查詢

*關聯查詢

*分頁查詢

*統計函數


Q如何優化Hibernate?

A:*使用雙向一對多關聯,不使用單向一對多

*靈活使用單向一對多關聯

*不用一對一,用多對一取代

*配置對象緩存,不使用集合緩存

*一對多集合使用bag,多對多集合使用set

*繼承類使用顯式多態

*表字段要少,表關聯不要怕多,有二級緩存撐


Q:Struts工作機制?爲什麼要使用Struts?

A:工作機制:

Struts的工作流程

在web應用啓動時就會加載初始化ActionServlet,ActionServlet從struts-config.xml文件中讀取配置信息,把它們存放到各種配置對象當ActionServlet接受到一個客戶請求時,將執行如下流程:

(1)檢索和用戶請求匹配的ActionMapping實例,如果不存在,就返回請求路徑無效信息。

(2)如果ActionForm實例不存在,就創建一個ActionForm對象,把客戶提交的表單數據保存到ActionForm對象中;

(3)根據配置信息決定是否需要表單驗證,如果需要驗證,就調用ActionForm的validate()方法;

(4)如果ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActionErrors對象,就表示表單驗證成功;

(5)ActionServlet根據ActionMapping所包含的映射信息決定將請求轉發給哪個Action,如果相應的Action實例不存在,就先創建這個實例,然後調用Action的execute()方法;

(6)Action的execute()方法返回一個ActionForward對象,ActionServlet在把客戶請求轉發給ActionForward對象指向的JSP組件

(7)ActionForward對戲哪個指向JSP組件生成動態網頁,返回給客戶。

爲什麼要用:

JSP,Servlet,JavaBean技術的出現給我們構建強大的企業應用系統提供了可能。但用這些技術構建的系統非常的繁亂,所以在此之上,我們需要一個規則、一個把這些技術組織起來的規則,這就是框架,Struts應運而而生。

基於Struts開發的應有由3類組件構成:控制器組件、模型組件、視圖組件



Q:Struts的validate框架是如何驗證的?

A:在Struts配置文件中配置具體的錯誤提示,再在FormBean中的validate()方法具體調用。


Q:說下Struts的設計模式

A:MVC模式:web應用程序啓動時就會加載並初始化ActionServlet。用戶提交表單時,一個配置好的ActionForm對象被創建,並被填入表單相應的數據,ActionServlet根據Struts-config.xml文件配置好的設置決定是否需要表單驗證,如果需要就調用ActionForm的Validate()驗證後選擇將請求發送到哪個Action,如果Action不存在,ActionServlet會先創建這個對象,然後調用Action的execute()方法。Execute()從ActionForm對象中獲取數據,完成業務邏輯,返回一個ActionForward對象,ActionServlet再把客戶請求轉發給ActionForward對象指定的JSP組件,ActionForward對象指定的jsp生成動態的網頁,返回給客戶。

單例模式

Factory(工程模式):

定義一個基類-〉實現基類方法(子類通過不同的方法)-〉定義一個工廠類(生成子類實例)-〉開發人員調用基類方法

Proxy(代理模式)


Q:spring工作機制及爲什麼要用?

A:1 spring mvc請所有的請求都提交給DispatcherServlet,它會委託應用系統的其他模塊負責對請求進行真正的處理工作。

2 DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller.

3 DispatcherSevlet請求提交到目標Controller

4 Controller進行業務邏輯處理後,會返回一個ModelAndView.

5 Dispathcher查詢一個或對個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象

6 視圖對象負責渲染返回給客戶端。


爲什麼要用:

AOP讓開發人員可以創建非行爲性的關注點,稱爲橫切關注點,並將它們插入到應用程序代碼中。使用AOP後,公共服務(比如日誌、持久性、事務等)就可以分解成方面並應用到域對象上,同時不會增加域對象的對象模型的複雜性。

IOC允許創建一個可以構造對象的應用環境,然後向這些對象傳遞它們的協作對象。正如單詞倒置所表明的,IOC就像反過來的JNDI。沒有使用一堆抽象工廠、服務定位器、單元素(singleton)和直接構造(straight contruction),每一個對象都是用其協作對象構造的。因此是由容器管理協作對象(collaborator).

Spring既是一個AOP框架,也是一個IOC容器。Spring最好的地方是它有助於您替換對象。有了Spring,只要用JavaBean屬性和配置文件加入依賴性(協作對象)。然後可以很容易地在需要時替換具有類似藉口的協作對象。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章