自由飛翔

          我在仰望,java之上

          統(tǒng)計(jì)

          留言簿(2)

          我關(guān)注的blog

          閱讀排行榜

          評(píng)論排行榜

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

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

          原理:

          1.         讀取并解析配置文件

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

          3.         打開(kāi)Sesssion

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

          5.         持久化操作

          6.         提交事務(wù)

          7.         關(guān)閉Session

          8.         關(guān)閉SesstionFactory

           

          為什么要用:

           

          1.    對(duì)JDBC訪問(wèn)數(shù)據(jù)庫(kù)的代碼做了封裝,大大簡(jiǎn)化了數(shù)據(jù)訪問(wèn)層繁瑣的重復(fù)性代碼。

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

          3.    hibernate使用Java反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來(lái)實(shí)現(xiàn)透明性。

          4.    hibernate的性能非常好,因?yàn)樗莻€(gè)輕量級(jí)框架。映射的靈活性很出色。它支持各種關(guān)系數(shù)據(jù)庫(kù),從一對(duì)一到多對(duì)多的各種復(fù)雜關(guān)系。

           

          2.   Hibernate是如何延遲加載?

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

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

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

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

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

          4.   說(shuō)下Hibernate的緩存機(jī)制

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

          2.         二級(jí)緩存:

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

          b)        分布式緩存

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

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

          5.   Hibernate的查詢方式

          SqlCriteria,object comptosition

          Hql

          1、  屬性查詢

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

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

          4、  分頁(yè)查詢

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

           

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

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

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

          3.         不用一對(duì)一,用多對(duì)一取代

          4.         配置對(duì)象緩存,不使用集合緩存

          5.         一對(duì)多集合使用Bag,多對(duì)多集合使用Set

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

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

           

          7.   Struts工作機(jī)制?為什么要使用Struts

          工作機(jī)制:

          Struts的工作流程:

            web應(yīng)用啟動(dòng)時(shí)就會(huì)加載初始化ActionServlet,ActionServlet

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

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

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

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

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

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

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

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

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

          為什么要用:

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

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

          8.   Strutsvalidate框架是如何驗(yàn)證的?

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

          9.   說(shuō)下Struts的設(shè)計(jì)模式

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

          單例模式

          Factory(工廠模式)

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

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

          Proxy(代理模式)

          10.              spring工作機(jī)制及為什么要用?

           

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

          2.DispatcherServlet查詢一個(gè)或多個(gè)HandlerMapping,找到處理請(qǐng)求的Controller.

          3.DispatcherServlet請(qǐng)請(qǐng)求提交到目標(biāo)Controller

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

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

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

          為什么用:

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

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

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



          Gavin

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

          主站蜘蛛池模板: 凤台县| 麟游县| 宁津县| 彭水| 桑日县| 上杭县| 贡觉县| 信丰县| 华安县| 万宁市| 安仁县| 会泽县| 祁阳县| 潍坊市| 武宁县| 新干县| 崇明县| 灵武市| 府谷县| 胶南市| 赤峰市| 墨玉县| 蕉岭县| 即墨市| 和顺县| 措美县| 孟州市| 清苑县| 通江县| 甘南县| 临潭县| 庆云县| 江孜县| 抚顺县| 乌兰县| 榆中县| 三江| 鄂尔多斯市| 江门市| 华蓥市| 墨脱县|