資源描述:
《hibernate、spring和struts工作原理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、Hibernate、Spring和Struts工作原理及使用理由??2009-06-2218:19:33
2、??分類:工作流程
3、??標(biāo)簽:
4、字號(hào)大中小?訂閱 1.讀取并解析配置文件 2.讀取并解析映射信息,創(chuàng)建SessionFactory 3.打開Sesssion 4.創(chuàng)建事務(wù)Transation 5.持久化操作 6.提交事務(wù) 7.關(guān)閉Session 8.關(guān)閉SesstionFactory 為什么要用: 1.對(duì)JDBC訪問數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)訪問層繁瑣的重復(fù)性代碼?! ?.Hibe
5、rnate是一個(gè)基于JDBC的主流持久化框架,是一個(gè)優(yōu)秀的ORM實(shí)現(xiàn)。他很大程度的簡化DAO層的編碼工作 3.hibernate使用Java反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來實(shí)現(xiàn)透明性?! ?.hibernate的性能非常好,因?yàn)樗莻€(gè)輕量級(jí)框架。映射的靈活性很出色。它支持各種關(guān)系數(shù)據(jù)庫,從一對(duì)一到多對(duì)多的各種復(fù)雜關(guān)系?! ?.Hibernate是如何延遲加載? 1.Hibernate2延遲加載實(shí)現(xiàn):a)實(shí)體對(duì)象b)集合(Collection) 2.Hibernate3提供了屬性的延遲加載功能 當(dāng)Hiber
6、nate在查詢數(shù)據(jù)的時(shí)候,數(shù)據(jù)并沒有存在與內(nèi)存中,當(dāng)程序真正對(duì)數(shù)據(jù)的操作時(shí),對(duì)象才存在與內(nèi)存中,就實(shí)現(xiàn)了延遲加載,他節(jié)省了服務(wù)器的內(nèi)存開銷,從而提高了服務(wù)器的性能?! ?.Hibernate中怎樣實(shí)現(xiàn)類之間的關(guān)系?(如:一對(duì)多、多對(duì)多的關(guān)系) 類與類之間的關(guān)系主要體現(xiàn)在表與表之間的關(guān)系進(jìn)行操作,它們都市對(duì)對(duì)象進(jìn)行操作,我們程序中把所有的表與類都映射在一起,它們通過配置文件中的many-to-one、one-to-many、many-to-many、 4.說下Hibernate的緩存機(jī)制 1.內(nèi)部緩存存在Hi
7、bernate中又叫一級(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的查詢方式 Sql、Criteria,tcomptosition Hql: 1、屬性查詢 2、參數(shù)查詢、命名參數(shù)查詢 3、關(guān)聯(lián)查詢 4、分頁查詢 5、統(tǒng)計(jì)函數(shù) 6.如何優(yōu)化Hibernate? 1.使用雙向一對(duì)多關(guān)聯(lián),不使用單向一對(duì)多 2.靈
8、活使用單向一對(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
9、接收到一個(gè)客戶請(qǐng)求時(shí),將執(zhí)行如下流程. -(1)檢索和用戶請(qǐng)求匹配的ActionMapping實(shí)例,如果不存在,就返回請(qǐng)求路徑無效信息; -(2)如果ActionForm實(shí)例不存在,就創(chuàng)建一個(gè)ActionForm對(duì)象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對(duì)象中; -(3)根據(jù)配置信息決定是否需要表單驗(yàn)證.如果需要驗(yàn)證,就調(diào)用ActionForm的validate()方法; -(4)如果ActionForm的validate()方法返回null或返回一個(gè)不包含ActionMessage的Actui
10、bErrors對(duì)象,就表示表單驗(yàn)證成功; -(5)ActionServlet根據(jù)ActionMapping所包含的映射信息決定將請(qǐng)求轉(zhuǎn)發(fā)給哪個(gè)Action,如果相應(yīng)的Action實(shí)例不存在,就先創(chuàng)建這個(gè)實(shí)例,然后調(diào)用Action的execute()方法; -(6)Action的execute()方法返回一個(gè)ActionForward對(duì)象,ActionServlet在把客戶請(qǐng)求轉(zhuǎn)發(fā)給ActionForward對(duì)象指向的JSP組件; -(7)ActionForward對(duì)象指向JSP組件生成動(dòng)態(tài)網(wǎng)頁,返回給客戶;
11、 為什么要用: 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)證的?