




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Hibernate 工作原理及為什么要用?原理:1. 讀取并解析配置文件2. 讀取并解析映射信息,創(chuàng)建 SessionFactory3. 打開 Sesssion4. 創(chuàng)建事務(wù) Transation5. 持久化操作6. 提交事務(wù)7. 關(guān)閉 Session8. 關(guān)閉 SesstionFactory為什么要用:1. 對 JDBC 訪問數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)訪問層繁瑣的重復(fù)性代碼。2. Hibernate是一個(gè)基于 JDBC 的主流持久化框架,是一個(gè)優(yōu)秀的 ORM 實(shí)現(xiàn)。他很大程度 的簡化 DAO 層的編碼工作3. hibernate使用 Java 反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來實(shí)現(xiàn)透
2、明性。4. hibernate的性能非常好,因?yàn)樗莻€(gè)輕量級框架。映射的靈活性很出色。它支持各種關(guān) 系數(shù)據(jù)庫,從一對一到多對多的各種復(fù)雜關(guān)系。2. Hibernate 是如何延遲加載 ?1. Hibernate2延遲加載實(shí)現(xiàn):a 實(shí)體對象 b 集合(Collection 2. Hibernate3 提供了屬性的延遲加載功能當(dāng) Hibernate 在查詢數(shù)據(jù)的時(shí)候,數(shù)據(jù)并沒有存在與內(nèi)存中,當(dāng)程序真正對數(shù)據(jù)的操作時(shí), 對象才存在與內(nèi)存中, 就實(shí)現(xiàn)了延遲加載, 他節(jié)省了服務(wù)器的內(nèi)存開銷, 從而提高了服務(wù)器 的性能。3. Hibernate 中怎樣實(shí)現(xiàn)類之間的關(guān)系 ?(如:一對多、多對多的關(guān)系 類與類
3、之間的關(guān)系主要體現(xiàn)在表與表之間的關(guān)系進(jìn)行操作, 它們都市對對象進(jìn)行操作, 我們 程序中把所有的表與類都映射在一起, 它們通過配置文件中的 many-to-one 、 one-to-many 、 many-to-many 、4. 說下 Hibernate 的緩存機(jī)制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 第三方緩存的實(shí)現(xiàn)5. Hibernate 的查詢方式Sql 、 Criteria,object comp
4、tositionHql :1、 屬性查詢2、 參數(shù)查詢、命名參數(shù)查詢3、 關(guān)聯(lián)查詢4、 分頁查詢5、 統(tǒng)計(jì)函數(shù)6. 如何優(yōu)化 Hibernate ?1. 使用雙向一對多關(guān)聯(lián),不使用單向一對多2. 靈活使用單向一對多關(guān)聯(lián)3. 不用一對一,用多對一取代4. 配置對象緩存,不使用集合緩存5. 一對多集合使用 Bag, 多對多集合使用 Set6. 繼承類使用顯式多態(tài)7. 表字段要少,表關(guān)聯(lián)不要怕多,有二級緩存撐腰7. Struts 工作機(jī)制?為什么要使用 Struts ?工作機(jī)制:Struts 的工作流程 :在 web 應(yīng)用啟動時(shí)就會加載初始化 ActionServlet,ActionServlet
5、從struts-config.xml 文件中讀取配置信息 , 把它們存放到各種配置對象當(dāng) ActionServlet 接收到一個(gè)客戶請求時(shí) , 將執(zhí)行如下流程 .-(1檢索和用戶請求匹配的 ActionMapping 實(shí)例 , 如果不存在 , 就返回請求路徑無效信息 ; -(2如果 ActionForm 實(shí)例不存在 , 就創(chuàng)建一個(gè) ActionForm 對象 , 把客戶提交的表單數(shù)據(jù)保存 到 ActionForm 對象中 ;-(3根據(jù)配置信息決定是否需要表單驗(yàn)證 . 如果需要驗(yàn)證 , 就調(diào)用 ActionForm 的 validate(方 法 ;-(4如果 ActionForm 的 valid
6、ate(方法返回 null 或返回一個(gè)不包含 ActionMessage 的 ActuibErrors 對象 , 就表示表單驗(yàn)證成功 ;-(5ActionServlet根據(jù) ActionMapping 所包含的映射信息決定將請求轉(zhuǎn)發(fā)給哪個(gè) Action, 如 果相應(yīng)的 Action 實(shí)例不存在 , 就先創(chuàng)建這個(gè)實(shí)例 , 然后調(diào)用 Action 的 execute(方法 ;-(6Action的 execute(方法返回一個(gè) ActionForward 對象 ,ActionServlet 在把客戶請求轉(zhuǎn)發(fā) 給 ActionForward 對象指向的 JSP 組件 ;-(7ActionForward
7、對象指向 JSP 組件生成動態(tài)網(wǎng)頁 , 返回給客戶 ;為什么要用:JSP 、 Servlet 、 JavaBean 技術(shù)的出現(xiàn)給我們構(gòu)建強(qiáng)大的企業(yè)應(yīng)用系統(tǒng)提供了可能。但用這 些技術(shù)構(gòu)建的系統(tǒng)非常的繁亂, 所以在此之上, 我們需要一個(gè)規(guī)則、 一個(gè)把這些技術(shù)組織起 來的規(guī)則,這就是框架, Struts 便應(yīng)運(yùn)而生?;?Struts 開發(fā)的應(yīng)用由 3類組件構(gòu)成:控制器組件、模型組件、視圖組件8. Struts 的 validate 框架是如何驗(yàn)證的?在 struts 配置文件中配置具體的錯(cuò)誤提示,再在 FormBean 中的 validate(方法具體調(diào)用。9. 說下 Struts 的設(shè)計(jì)模式MV
8、C 模式 : web應(yīng)用程序啟動時(shí)就會加載并初始化 ActionServler 。用戶提交表單時(shí),一個(gè) 配置好的 ActionForm 對象被創(chuàng)建,并被填入表單相應(yīng)的數(shù)據(jù), ActionServler 根據(jù)Struts-config.xml 文件配置好的設(shè)置決定是否需要表單驗(yàn)證,如果需要就調(diào)用 ActionForm 的 Validate (驗(yàn)證后選擇將請求發(fā)送到哪個(gè) Action ,如果 Action 不存在, ActionServlet 會先創(chuàng)建這個(gè)對象,然后調(diào)用 Action 的 execute (方法。 Execute (從 ActionForm 對 象中獲取數(shù)據(jù),完成業(yè)務(wù)邏輯,返回一個(gè)
9、 ActionForward 對象, ActionServlet 再把客戶請 求轉(zhuǎn)發(fā)給 ActionForward 對象指定的 jsp 組件, ActionForward 對象指定的 jsp 生成動態(tài)的 網(wǎng)頁,返回給客戶。10. spring 工作機(jī)制及為什么要用 ?1.spring mvc請所有的請求都提交給 DispatcherServlet, 它會委托應(yīng)用系統(tǒng)的其他模塊負(fù)責(zé) 負(fù)責(zé)對請求進(jìn)行真正的處理工作。2.DispatcherServlet 查詢一個(gè)或多個(gè) HandlerMapping, 找到處理請求的 Controller.3.DispatcherServlet 請請求提交到目標(biāo) C
10、ontroller4.Controller 進(jìn)行業(yè)務(wù)邏輯處理后,會返回一個(gè) ModelAndView5.Dispathcher 查詢一個(gè)或多個(gè) ViewResolver 視圖解析器 , 找到 ModelAndView 對象指定的 視圖對象6. 視圖對象負(fù)責(zé)渲染返回給客戶端。為什么用:AOP 讓開發(fā)人員可以創(chuàng)建非行為性的關(guān)注點(diǎn), 稱為橫切關(guān)注點(diǎn), 并將它們插入到應(yīng)用程序 代碼中。使用 AOP 后,公共服務(wù) (比如日志、持久性、事務(wù)等就可以分解成方面并應(yīng) 用到域?qū)ο笊?同時(shí)不會增加域?qū)ο蟮膶ο竽P偷膹?fù)雜性。IOC 允許創(chuàng)建一個(gè)可以構(gòu)造對象的應(yīng)用環(huán)境,然后向這些對象傳遞它們的協(xié)作對象。正如 單詞 倒
11、置 所表明的, IOC 就像反 過來的 JNDI 。沒有使用一堆抽象工廠、服務(wù)定位器、 單元素(singleton 和直接構(gòu)造(straight construction ,每一個(gè)對象都是用其協(xié)作對象構(gòu) 造的。因此是由容器管理協(xié)作對象(collaborator 。Spring 即使一個(gè) AOP 框架, 也是一 IOC 容器。 Spring 最好的地方是它有助于您替換對象。 有了 Spring ,只要用 JavaBean 屬性和配置文件加入依賴性(協(xié)作對象 。然后可以很容 易地在需要時(shí)替換具有類似接口的協(xié)作對象。 Spring 框架是一個(gè)分層架構(gòu),由 7 個(gè)定義良好的模塊組成。 Spring 模
12、塊構(gòu)建在核心容器 之上,核心容器定義了創(chuàng)建、配置和管理 bean 的方式,如圖 1 所示。組成 Spring 框架的每個(gè)模塊(或組件都可以單獨(dú)存在,或者與其他一個(gè)或多個(gè)模塊聯(lián)合 實(shí)現(xiàn)。每個(gè)模塊的功能如下: 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory ,它是工廠模式的實(shí)現(xiàn)。 BeanFactory 使用控制反轉(zhuǎn) (IOC 模式將應(yīng)用程 序的配置和依賴性規(guī)范與實(shí)際的應(yīng)用程序代碼分開。 Spring 上下文:Spring 上下文是一個(gè)配置文件, 向 Spring 框架提供上下文信息。 Spring 上下文包括企業(yè)服務(wù),例如 JNDI 、 EJB
13、 、電子郵件、國際化、校驗(yàn)和調(diào)度功能。 Spring AOP:通過配置管理特性, Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。 所以, 可以很容易地使 Spring 框架管理的任何對象支持 AOP 。 Spring AOP 模塊為基于 Spring 的應(yīng)用程序中的對象提供了事務(wù)管理服務(wù)。通過使用 Spring AOP,不 用依賴 EJB 組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中。 Spring DAO:JDBC DAO 抽象層提供了有意義的異常層次結(jié)構(gòu), 可用該結(jié)構(gòu)來管理異常 處理和不同數(shù)據(jù)庫供應(yīng)商拋出的錯(cuò)誤消息。 異常層次結(jié)構(gòu)簡化了錯(cuò)誤處理, 并且極
14、大地降低 了需要編寫的異常代碼數(shù)量 (例如打開和關(guān)閉連接 。 Spring DAO 的面向 JDBC 的異常遵 從通用的 DAO 異常層次結(jié)構(gòu)。 Spring ORM:Spring 框架插入了若干個(gè) ORM 框架,從而提供了 ORM 的對象關(guān)系工 具,其中包括 JDO 、 Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務(wù) 和 DAO 異常層次結(jié)構(gòu)。 Spring Web 模塊:Web 上下文模塊建立在應(yīng)用程序上下文模塊之上,為基于 Web 的 應(yīng)用程序提供了上下文。 所以, Spring 框架支持與 Jakarta Struts 的集成。 Web
15、模塊還簡 化了處理多部分請求以及將請求參數(shù)綁定到域?qū)ο蟮墓ぷ鳌?Spring MVC 框架:MVC 框架是一個(gè)全功能的構(gòu)建 Web 應(yīng)用程序的 MVC 實(shí)現(xiàn)。 通過 策略接口, MVC 框架變成為高度可配置的, MVC 容納了大量視圖技術(shù),其中包括 JSP 、 Velocity 、 Tiles 、 iText 和 POI 。Spring 框架的功能可以用在任何 J2EE 服務(wù)器中,大多數(shù)功能也適用于不受管理的環(huán)境。 Spring 的核心要點(diǎn)是:支持不綁定到特定 J2EE 服務(wù)的可重用業(yè)務(wù)和數(shù)據(jù)訪問對象。毫無 疑問,這樣的對象可以在不同 J2EE 環(huán)境 (Web 或 EJB 、獨(dú)立應(yīng)用程序、測試
16、環(huán)境之 間重用。IOC 和 AOP控制反轉(zhuǎn)模式 (也稱作依賴性介入 的基本概念是:不創(chuàng)建對象, 但是描述創(chuàng)建它們的方式。 在代碼中不直接與對象和服務(wù)連接, 但在配置文件中描述哪一個(gè)組件需要哪一項(xiàng)服務(wù)。 容器 (在 Spring 框架中是 IOC 容器 負(fù)責(zé)將這些聯(lián)系在一起。在典型的 IOC 場景中,容器創(chuàng)建了所有對象,并設(shè)置必要的屬性將它們連接在一起,決定 什么時(shí)間調(diào)用方法。下表列出了 IOC 的一個(gè)實(shí)現(xiàn)模式。Spring 框架的 IOC 容器采用類型 2 和類型 3 實(shí)現(xiàn)。面向方面的編程面向方面的編程,即 AOP ,是一種編程技術(shù),它允許程序員對橫切關(guān)注點(diǎn)或橫切典型的職 責(zé)分界線的行為(例如
17、日志和事務(wù)管理進(jìn)行模塊化。 AOP 的核心構(gòu)造是方面,它將那些 影響多個(gè)類的行為封裝到可重用的模塊中。AOP 和 IOC 是補(bǔ)充性的技術(shù),它們都運(yùn)用模塊化方式解決企業(yè)應(yīng)用程序開發(fā)中的復(fù)雜問 題。在典型的面向?qū)ο箝_發(fā)方式中,可能要將日志記錄語句放在所有方法和 Java 類中才 能實(shí)現(xiàn)日志功能。在 AOP 方式中,可以反過來將日志服務(wù)模塊化,并以聲明的方式將它 們應(yīng)用到需要日志的組件上。當(dāng)然,優(yōu)勢就是 Java 類不需要知道日志服務(wù)的存在,也不 需要考慮相關(guān)的代碼。所以,用 Spring AOP 編寫的應(yīng)用程序代碼是松散耦合的。AOP 的功能完全集成到了 Spring 事務(wù)管理、日志和其他各種特性
18、的上下文中。IOC 容器Spring 設(shè)計(jì)的核心是 org.springframework.beans 包, 它的設(shè)計(jì)目標(biāo)是與 JavaBean 組件 一起使用。 這個(gè)包通常不是由用戶直接使用, 而是由服務(wù)器將其用作其他多數(shù)功能的底層中 介。下一個(gè)最高級抽象是 BeanFactory 接口,它是工廠設(shè)計(jì)模式的實(shí)現(xiàn),允許通過名稱創(chuàng) 建和檢索對象。 BeanFactory 也可以管理對象之間的關(guān)系。BeanFactory 支持兩個(gè)對象模型。 單態(tài) 模型提供了具有特定名稱的對象的共享實(shí)例,可以在查詢時(shí)對其進(jìn)行檢索。 Singleton 是默認(rèn)的也是最常用的對象模型。對于無狀態(tài)服務(wù)對象很理想。 原型
19、模型確保每次檢索都會創(chuàng)建單獨(dú)的對象。在每個(gè)用戶都需要自己的對象時(shí),原型模 型最適合。bean 工廠的概念是 Spring 作為 IOC 容器的基礎(chǔ)。 IOC 將處理事情的責(zé)任從應(yīng)用程序代碼轉(zhuǎn)移到框架。正如我將在下一個(gè)示例中演示的那樣,Spring 框架使用 JavaBean 屬性和 配置數(shù)據(jù)來指出必須設(shè)置的依賴關(guān)系。 BeanFactory 接口 因?yàn)?org.springframework.beans.factory.BeanFactory 是一個(gè)簡單接口,所以可以針對各 種底層存儲方法實(shí)現(xiàn)。最常用的 BeanFactory 定義是 XmlBeanFactory,它根據(jù) XML 文 件中的定
20、義裝入 bean,如清單 1 所示。 清單 1. XmlBeanFactory BeanFactory factory = new XMLBeanFactory(new FileInputSteam(mybean.xml; 在 XML 文件中定義的 Bean 是被消極加載的,這意味在需要 bean 之前,bean 本身不 會被初始化。要從 BeanFactory 檢索 bean,只需調(diào)用 getBean( 方法,傳入將要檢索的 bean 的名稱即可,如清單 2 所示。 清單 2. getBean( MyBean mybean = (MyBean factory.getBean(mybean;
21、每個(gè) bean 的定義都可以是 POJO (用類名和 JavaBean 初始化屬性定義) 或 FactoryBean。FactoryBean 接口為使用 Spring 框架構(gòu)建的應(yīng)用程序添加了一個(gè)間接的級 別。 IOC 示例 理解控制反轉(zhuǎn)最簡單的方式就是看它的實(shí)際應(yīng)用。在對由三部分組成的 Spring 系列 的第 1 部分進(jìn)行總結(jié)時(shí),我使用了一個(gè)示例,演示了如何通過 Spring IOC 容器注入應(yīng)用程序的 依賴關(guān)系(而不是將它們構(gòu)建進(jìn)來) 。 我用開啟在線信用帳戶的用例作為起點(diǎn)。 對于該實(shí)現(xiàn), 開啟信用帳戶要求用戶與以下服務(wù)進(jìn) 行交互: 信用級別評定服務(wù),查詢用戶的信用歷史信息。 遠(yuǎn)程信息鏈
22、接服務(wù),插入客戶信息,將客戶信息與信用卡和銀行信息連接起來,以進(jìn)行 自動借記(如果需要的話) 。 電子郵件服務(wù),向用戶發(fā)送有關(guān)信用卡狀態(tài)的電子郵件。 三個(gè)接口 對于這個(gè)示例,我假設(shè)服務(wù)已經(jīng)存在,理想的情況是用松散耦合的方式把它們集成在一起。 以下清單顯示了三個(gè)服務(wù)的應(yīng)用程序接口。 清單 3. CreditRatingInterface public interface CreditRatingInterface public boolean getUserCreditHistoryInformation(ICustomer iCustomer; 清單 3 所示的信用級別評定接口提供了信用歷史信息。它需要一個(gè)包含客戶信息的 Cust
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 空調(diào)制冷劑的選擇與應(yīng)用考核試卷
- 花畫工藝品的旅游紀(jì)念品開發(fā)考核試卷
- 陶瓷企業(yè)的品牌形象塑造與社會責(zé)任考核試卷
- 金融行業(yè)利率市場化與匯率形成考核試卷
- 麻醉藥的選擇
- 損傷控制外科
- 呼吸系統(tǒng)疾病病情觀察
- 呼吸功能衰竭病癥概述
- 外科值班處理規(guī)范與流程
- SDH-IN-24-生命科學(xué)試劑-MCE
- 工廠計(jì)件獎罰管理制度
- 2024年陜西省西安市初中學(xué)業(yè)水平模擬考試地理試卷
- 2025黑龍江省交通投資集團(tuán)限公司招聘348人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- cpsm考試試題及答案
- 匯川技術(shù)高壓變頻器技術(shù)標(biāo)準(zhǔn)教材
- 2025年玻璃鋼圍網(wǎng)漁船項(xiàng)目市場調(diào)查研究報(bào)告
- 江蘇省南京2022年中考?xì)v史試卷(解析版)
- 公司用人培養(yǎng)協(xié)議書
- GB/T 45593-2025精細(xì)陶瓷微磨損試驗(yàn)測定涂層的耐磨性
- 2025年中國啤酒專用冷酶劑市場調(diào)查研究報(bào)告
- 河北財(cái)經(jīng)對口試題及答案
評論
0/150
提交評論