框架基礎知識spring springmvc mybatis struts hibernate

一、spring作用

1、能夠很好的各大框架整合

2、通過IOC容器管理對象的創建和銷燬工廠模式

3、使用hibernate、mybatis時,不同每次都編寫提交的事物寫的代碼,可以使用spring的AOP來管理事務


二、springmvc工作原理

1、客戶端請求提交到DispatcherServlet

2、由 DispatcherServlet 控制器查詢HandlerMapping,找到處理請求的controller

3、Controller調用業務邏輯處理後,返回ModelAndview

4、DispatcherServlet查詢視圖解析,找到ModelAndview指定的視圖

5、視圖負責將結果顯示到客戶端


三、mybatis 優缺點


優點:SQL在xml中,統一管理和優化。

     提供映射標籤,支持對象和數據庫的orm字段關係映射

    可以對SQL優化

缺點:SQL工作量大,移植性不好,不支持級聯。


四、聲明式事務和編程式事物

編程式事務需要你在代碼中直接加入處理事務的邏輯,可能需要在代碼中顯式調用beginTransaction()、commit()、rollback()等事務管理相關的方法,如在執行a方法時候需要事務處理,你需要在a方法開始時候開啓事務,處理完後。在方法結束時候,關閉事務.
聲明式的事務的做法是在a方法外圍添加註解或者直接在配置文件中定義,a方法需要事務處理,在spring中會通過配置文件在a方法前後攔截,並添加事務.
二者區別.編程式事務侵入性比較強,但處理粒度更細.

五、談談對ssm框架的整合

spring+springmvc+mybatis,標準的mvc設計模式。

劃分爲顯示層、controller、service、dao。

spring實現業務對象管理、springmvc負責請求的轉發和試圖管理、mybatis作爲數據對象持久化引擎

六、maven作用

幫助下載jar包,尋找依賴、幫助,熱編譯、熱部署

七、Struts2工作原理

    1、客戶端初始化一個指向Servlet容器(例如Tomcat)的請求

    2、這個請求經過一系列的過濾器(Filter)(這些過濾器中有一個叫做ActionContextCleanUp的可選過濾器,這個過濾器對於Struts2和其他框架的集成很有幫助,例如:SiteMesh Plugin) 

    3、接着FilterDispatcher被調用,FilterDispatcher詢問ActionMapper來決定這個請是否需要調用某個Action 

    4、如果ActionMapper決定需要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy 

    5、ActionProxy通過ConfigurationManager詢問框架的配置文件,找到需要調用的Action類 ,這裏,我們一般是從struts.xml配置中讀取。

    6、ActionProxy創建一個ActionInvocation的實例。

    7、ActionInvocation實例使用命名模式來調用,在調用Action的過程前後,涉及到相關攔截器(Intercepter)的調用。

    8、一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。

八、springmvc和Struts2區別

機制:springmvc入口是servlet,Struts2入口是filter

性能:springmvc比Struts2快一點,springmvc給予方法設計;Struts2基於類,每發一次請求都會實例一個action,       每個action都會注入屬性

參數傳遞:Struts2再接收參數的時候,可以採用屬性,說明可以讓多個方法共享。

攔截器機制:springmvc用的是獨立的AOP方式,Struts2有自己的interception機制。Struts2配置文件比springmvc       大,springmvc使用簡潔,比Struts開發效率要高。

九、hibernate中get和load的區別

1、get不管數據有沒有被使用,都會發出SQL
    load如果查詢的數據沒有被使用,不會發出SQL,使用數據纔會發出sql,支持懶加載lazy
2、get如果未查到數據,報空值
    load未查到數據,拋出異常
十、hibernate工作原理
1、讀取並加載配置文件   2、創建sessionFactory   3、打開session
4、打開事物                     5、持久化操作                  6、提交事物,關閉資源
7、關閉session                8、關閉sessionFactory   

十一、hibernate優缺點
優點1、對象關係數據庫映射,程序更加面向對象
       2、持久化狀態
       3、沒有侵入性,輕量級框架
       4、移植性好
       5、緩存機制,提供一級緩存和二級緩存
       6、簡潔的HQL編程
缺點:批量處理數據時有弱勢,不適合批量操作

十二、hibernate和mybatis的區別
     1.兩者最大的區別

針對簡單邏輯,Hibernate和MyBatis都有相應的代碼生成工具,可以生成簡單基本的DAO層方法。

針對高級查詢,Mybatis需要手動編寫SQL語句,以及ResultMap。而Hibernate有良好的映射機制,開發者無需關心SQL的生成與結果映射,可以更專注於業務流程。

2.開發難度對比

Hibernate的開發難度要大於Mybatis。主要由於Hibernate比較複雜、龐大,學習週期較長。而Mybatis則相對簡單一些,並且Mybatis主要依賴於sql的書寫,讓開發者感覺更熟悉。

3.sql書寫比較

MybatisSQL是手動編寫的,所以可以按需求指定查詢的字段。不過沒有自己的日誌統計,所以要藉助log4j來記錄日誌。

Hibernate也可以自己寫SQL來指定需要查詢的字段,但這樣就破壞了Hibernate開發的簡潔性。不過Hibernate具有自己的日誌統計。


4.數據庫擴展性比較

Mybatis由於所有SQL都是依賴數據庫書寫的,所以擴展性,遷移性比較差。

Hibernate與數據庫具體的關聯都在XML中,所以HQL對具體是用什麼數據庫並不是很關心。

5.緩存機制比較

相同點:HibernateMybatis的二級緩存除了採用系統默認的緩存機制外,都可以通過實現你自己的緩存或爲其他第三方緩存方案,創建適配器來完全覆蓋緩存行爲。

不同點:Hibernate的二級緩存配置在SessionFactory生成的配置文件中進行詳細配置,然後再在具體的表-對象映射中配置是那種緩存。

MyBatis的二級緩存配置都是在每個具體的表-對象映射中進行詳細配置,這樣針對不同的表可以自定義不同的緩存機制。並且Mybatis可以在命名空間中共享相同的緩存配置和實例,通過Cache-ref來實現。

兩者比較:因爲Hibernate對查詢對象有着良好的管理機制,用戶無需關心SQL。所以在使用二級緩存時如果出現髒數據,系統會報出錯誤並提示。

MyBatis在這一方面,使用二級緩存時需要特別小心。如果不能完全確定數據更新操作的波及範圍,避免Cache的盲目使用。否則,髒數據的出現會給系統的正常運行帶來很大的隱患。

6.總結:

HibernateMyBatis都可以是通過SessionFactoryBuiderXML配置文件生成SessionFactory,然後由SessionFactory 生成Session,最後由Session來開啓執行事務和SQL語句。

而MyBatis的優勢是MyBatis可以進行更爲細緻的SQL優化,可以減少查詢字段,並且容易掌握。

Hibernate的優勢是DAO層開發比MyBatis簡單,Mybatis需要維護SQL和結果映射。數據庫移植性很好,MyBatis的數據庫移植性不好,不同的數據庫需要寫不同SQL有更好的二級緩存機制,可以使用第三方緩存。MyBatis本身提供的緩存機制不佳。



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