自由飛翔

          我在仰望,java之上

          導(dǎo)航

          <2011年8月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          公告

          離職進行中

          隨筆分類

          隨筆檔案

          文章檔案

          統(tǒng)計

          留言簿(2)

          我關(guān)注的blog

          閱讀排行榜

          評論排行榜

          Struts,Spring,Hibernate面試題總結(jié)

          (轉(zhuǎn)載)http://blog.csdn.net/David8631/article/details/2676615 作者:David8631
          Hibernate工作原理及為什么要用?

          原理:

          1.         讀取并解析配置文件

          2.         讀取并解析映射信息,創(chuàng)建SessionFactory

          3.         打開Sesssion

          4.         創(chuàng)建事務(wù)Transation

          5.         持久化操作

          6.         提交事務(wù)

          7.         關(guān)閉Session

          8.         關(guān)閉SesstionFactory

           

          為什么要用:

           

          1.    JDBC訪問數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)訪問層繁瑣的重復(fù)性代碼。

          2.    Hibernate是一個基于JDBC的主流持久化框架,是一個優(yōu)秀的ORM實現(xiàn)。他很大程度的簡化DAO層的編碼工作

          3.    hibernate使用Java反射機制,而不是字節(jié)碼增強程序來實現(xiàn)透明性。

          4.    hibernate的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。它支持各種關(guān)系數(shù)據(jù)庫,從一對一到多對多的各種復(fù)雜關(guān)系。

           

          2.   Hibernate是如何延遲加載?

          1.         Hibernate2延遲加載實現(xiàn):a)實體對象  b)集合(Collection

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

          當(dāng)Hibernate在查詢數(shù)據(jù)的時候,數(shù)據(jù)并沒有存在與內(nèi)存中,當(dāng)程序真正對數(shù)據(jù)的操作時,對象才存在與內(nèi)存中,就實現(xiàn)了延遲加載,他節(jié)省了服務(wù)器的內(nèi)存開銷,從而提高了服務(wù)器的性能。

          3.   Hibernate中怎樣實現(xiàn)類之間的關(guān)系?(如:一對多、多對多的關(guān)系)

          類與類之間的關(guān)系主要體現(xiàn)在表與表之間的關(guān)系進行操作,它們都市對對象進行操作,我們程序中把所有的表與類都映射在一起,它們通過配置文件中的many-to-one、one-to-many、many-to-many、

          4.   說下Hibernate的緩存機制

          1.         內(nèi)部緩存存在Hibernate中又叫一級緩存,屬于應(yīng)用事物級緩存

          2.         二級緩存:

          a)         應(yīng)用及緩存

          b)        分布式緩存

          條件:數(shù)據(jù)不會被第三方修改、數(shù)據(jù)大小在可接受范圍、數(shù)據(jù)更新頻率低、同一數(shù)據(jù)被系統(tǒng)頻繁使用、非              關(guān)鍵數(shù)據(jù)

          c)  第三方緩存的實現(xiàn)

          5.   Hibernate的查詢方式

          Sql、Criteria,object comptosition

          Hql

          1、  屬性查詢

          2、  參數(shù)查詢、命名參數(shù)查詢

          3、  關(guān)聯(lián)查詢

          4、  分頁查詢

          5、  統(tǒng)計函數(shù)

           

          6.   如何優(yōu)化Hibernate

          1.         使用雙向一對多關(guān)聯(lián),不使用單向一對多

          2.         靈活使用單向一對多關(guān)聯(lián)

          3.         不用一對一,用多對一取代

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

          5.         一對多集合使用Bag,多對多集合使用Set

          6.         繼承類使用顯式多態(tài)

          7.         表字段要少,表關(guān)聯(lián)不要怕多,有二級緩存撐腰

           

          7.   Struts工作機制?為什么要使用Struts?

          工作機制:

          Struts的工作流程:

            web應(yīng)用啟動時就會加載初始化ActionServlet,ActionServlet

            struts-config.xml文件中讀取配置信息,把它們存放到各種配置對象

            當(dāng)ActionServlet接收到一個客戶請求時,將執(zhí)行如下流程.

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

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

              -(3)根據(jù)配置信息決定是否需要表單驗證.如果需要驗證,就調(diào)用ActionFormvalidate()方法;

              -(4)如果ActionFormvalidate()方法返回null或返回一個不包含ActionMessageActuibErrors對象,                就表示表單驗證成功;

              -(5)ActionServlet根據(jù)ActionMapping所包含的映射信息決定將請求轉(zhuǎn)發(fā)給哪個Action,如果相應(yīng)的                    Action實例不存在,就先創(chuàng)建這個實例,然后調(diào)用Actionexecute()方法;

              -(6)Actionexecute()方法返回一個ActionForward對象,ActionServlet在把客戶請求轉(zhuǎn)發(fā)給                               ActionForward對象指向的JSP組件;

              -(7)ActionForward對象指向JSP組件生成動態(tài)網(wǎng)頁,返回給客戶;

          為什么要用:

          JSPServlet、JavaBean技術(shù)的出現(xiàn)給我們構(gòu)建強大的企業(yè)應(yīng)用系統(tǒng)提供了可能。但用這些技術(shù)構(gòu)建的系統(tǒng)非常的繁亂,所以在此之上,我們需要一個規(guī)則、一個把這些技術(shù)組織起來的規(guī)則,這就是框架,Struts便應(yīng)運而生。

          基于Struts開發(fā)的應(yīng)用由3類組件構(gòu)成:控制器組件、模型組件、視圖組件

          8.   Strutsvalidate框架是如何驗證的?

          struts配置文件中配置具體的錯誤提示,再在FormBean中的validate()方法具體調(diào)用。

          9.   說下Struts的設(shè)計模式

          MVC模式:  web應(yīng)用程序啟動時就會加載并初始化ActionServler。用戶提交表單時,一個配置好的ActionForm對象被創(chuàng)建,并被填入表單相應(yīng)的數(shù)據(jù),ActionServler根據(jù)Struts-config.xml文件配置好的設(shè)置決定是否需要表單驗證,如果需要就調(diào)用ActionFormValidate()驗證后選擇將請求發(fā)送到哪個Action,如果Action不存在,ActionServlet會先創(chuàng)建這個對象,然后調(diào)用Actionexecute()方法。Execute()從ActionForm對象中獲取數(shù)據(jù),完成業(yè)務(wù)邏輯,返回一個ActionForward對象,ActionServlet再把客戶請求轉(zhuǎn)發(fā)給ActionForward對象指定的jsp組件,ActionForward對象指定的jsp生成動態(tài)的網(wǎng)頁,返回給客戶。

          單例模式

          Factory(工廠模式)

          定義一個基類===》實現(xiàn)基類方法(子類通過不同的方法)===》定義一個工廠類(生成子類實例)

          ===》開發(fā)人員調(diào)用基類方法

          Proxy(代理模式)

          10.              spring工作機制及為什么要用?

           

          1.spring mvc請所有的請求都提交給DispatcherServlet,它會委托應(yīng)用系統(tǒng)的其他模塊負責(zé)負責(zé)對請求進行真正的處理工作。

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

          3.DispatcherServlet請請求提交到目標Controller

          4.Controller進行業(yè)務(wù)邏輯處理后,會返回一個ModelAndView

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

          6.視圖對象負責(zé)渲染返回給客戶端。

          為什么用:

          {AOP 讓開發(fā)人員可以創(chuàng)建非行為性的關(guān)注點,稱為橫切關(guān)注點,并將它們插入到應(yīng)用程序代碼中。使用 AOP 后,公共服務(wù)   (比如日志、持久性、事務(wù)等)就可以分解成方面并應(yīng)用到域?qū)ο笊希瑫r不會增加域?qū)ο蟮膶ο竽P偷膹?fù)雜性。

                         IOC 允許創(chuàng)建一個可以構(gòu)造對象的應(yīng)用環(huán)境,然后向這些對象傳遞它們的協(xié)作對象。正如單詞 倒置 所表明的,IOC 就像反      過來的 JNDI。沒有使用一堆抽象工廠、服務(wù)定位器、單元素(singleton)和直接構(gòu)造(straight construction),每一個對象都是用     其協(xié)作對象構(gòu)造的。因此是由容器管理協(xié)作對象(collaborator)。

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



          Gavin

          posted on 2011-08-28 12:41 GavinMiao 閱讀(431) 評論(0)  編輯  收藏 所屬分類: 面試題

          主站蜘蛛池模板: 汕尾市| 延津县| 拜泉县| 新乡县| 塔河县| 武强县| 马关县| 怀仁县| 双流县| 旌德县| 梁河县| 鹤壁市| 德庆县| 特克斯县| 山东省| 镇平县| 合江县| 洞口县| 璧山县| 无为县| 怀宁县| 赤城县| 疏附县| 南充市| 来凤县| 潢川县| 桦南县| 精河县| 绥宁县| 磐石市| 稻城县| 广平县| 东安县| 福贡县| 沁水县| 永州市| 丹棱县| 华亭县| 怀仁县| 抚松县| 肇源县|