Hibernate工作原理及為什麼要用?<br />原理:<br />1.讀取並解析設定檔<br />2.讀取並解析映射資訊,建立SessionFactory<br />3.開啟Sesssion<br />4.建立事務Transation<br />5.持久化操作<br />6.提交事務<br />7.關閉Session<br />8.關閉SesstionFactory </p><p>為什麼要用:<br />1. 對JDBC訪問資料庫的代碼做了封裝,大大簡化了資料訪問層繁瑣的重複性代碼。<br />2. Hibernate是一個基於JDBC的主流持久化架構,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作<br />3. hibernate使用Java反射機制,而不是位元組碼增強程式來實現透明性。<br />4. hibernate的效能非常好,因為它是個輕量級架構。映射的靈活性很出色。它支援各種關聯式資料庫,從一對一到多對多的各種複雜關係。 </p><p>2. Hibernate是如何消極式載入?<br />1. Hibernate2消極式載入實現:a)實體物件 b)集合(Collection)<br />2. Hibernate3 提供了屬性的消極式載入功能;當Hibernate在查詢資料的時候,資料並沒有存在與記憶體中,當程式真正對資料的操作時,對象才存在與記憶體中,就實現了消極式載入,他節省了伺服器的記憶體開銷,從而提高了伺服器的效能。<br />3.Hibernate中怎樣實作類別之間的關係?(如:一對多、多對多的關係)<br />類與類之間的關係主要體現在表與表之間的關係進行操作,它們都市對對象進行操作,我們程式中把所有的表與類都映射在一起,它們通過設定檔中的many-to-one、one-to-many、many-to-many、 </p><p>4. 說下Hibernate的緩衝機制<br />1. 內部緩衝存在Hibernate中又叫一級緩衝,屬於應用事物級緩衝<br />2. 二級緩衝:<br />a) 應用及緩衝<br />b) 分布式緩衝<br />條件:資料不會被第三方修改、資料大小在可接受範圍、資料更新頻率低、同一資料被系統頻繁使用、非 關鍵資料<br />c) 第三方緩衝的實現 </p><p>5. Hibernate的查詢方式<br />Sql、Criteria,object comptosition<br />Hql:<br />1、 屬性查詢<br />2、 參數查詢、具名引數查詢<br />3、 關聯查詢<br />4、 分頁查詢<br />5、 統計函數 </p><p>6. 如何最佳化Hibernate?<br />1.使用雙向一對多關聯,不使用單向一對多<br />2.靈活使用單向一對多關聯<br />3.不用一對一,用多對一取代<br />4.設定物件緩衝,不使用集合緩衝<br />5.一對多集合使用Bag,多對多集合使用Set<br />6. 繼承類使用顯式多態<br />7. 表欄位要少,表關聯不要怕多,有二級緩衝撐腰 </p><p>7. Struts工作機制?為什麼要使用Struts?<br />工作機制:<br />Struts的工作流程:<br />在web應用啟動時就會載入初始化ActionServlet,ActionServlet從<br />struts-config.xml檔案中讀取配置資訊,把它們存放到各種設定物件<br />當ActionServlet接收到一個客戶請求時,將執行如下流程.<br /> -(1)檢索和使用者請求匹配的ActionMapping執行個體,如果不存在,就返回請求路徑無效資訊;<br /> -(2)如果ActionForm執行個體不存在,就建立一個ActionForm對象,把客戶提交的表單資料儲存到ActionForm對象中;<br /> -(3)根據配置資訊決定是否需要表單驗證.如果需要驗證,就調用ActionForm的validate()方法;<br /> -(4)如果ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActuibErrors對象, 就表示表單驗證成功;<br /> -(5)ActionServlet根據ActionMapping所包含的映射資訊決定將請求轉寄給哪個Action,如果相應的 Action執行個體不存在,就先建立這個執行個體,然後調用Action的execute()方法;<br /> -(6)Action的execute()方法返回一個ActionForward對象,ActionServlet在把客戶請求轉寄給 ActionForward對象指向的JSP組件;<br /> -(7)ActionForward對象指向JSP組件產生動態網頁,返回給客戶; </p><p>為什麼要用:<br />JSP、Servlet、JavaBean技術的出現給我們構建強大的公司專屬應用程式系統提供了可能。但用這些技術構建的系統非常的繁亂,所以在此之上,我們需要一個規則、一個把這些技術組織起來的規則,這就是架構,Struts便應運而生。<br />基於Struts開發的應用由3類組件構成:控制器組件、模型組件、視圖組件 </p><p>8. Struts的validate架構是如何驗證的?<br />在struts設定檔中配置具體的錯誤提示,再在FormBean中的validate()方法具體調用。 </p><p>9. 說下Struts的設計模式<br />MVC模式: web應用程式啟動時就會載入並初始化ActionServler。使用者提交表單時,一個配置好的ActionForm對象被建立,並被填入表單相應的資料,ActionServler根據Struts-config.xml檔案配置好的設定決定是否需要表單驗證,如果需要就調用ActionForm的Validate()驗證後選擇將請求發送到哪個Action,如果Action不存在,ActionServlet會先建立這個對象,然後調用Action的execute()方法。Execute()從ActionForm對象中擷取資料,完成商務邏輯,返回一個ActionForward對象,ActionServlet再把客戶請求轉寄給ActionForward對象指定的jsp組件,ActionForward對象指定的jsp產生動態網頁,返回給客戶。 </p><p>10. spring工作機制及為什麼要用?<br />1.spring mvc請所有的請求都提交給DispatcherServlet,它會委託應用系統的其他模組負責負責對請求進行真正的處理工作。<br />2.DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller.<br />3.DispatcherServlet請請求提交到目標Controller<br />4.Controller進行商務邏輯處理後,會返回一個ModelAndView<br />5.Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象<br />6.視圖對象負責渲染返回給用戶端。 </p><p>為什麼用:<br />{AOP 讓開發人員可以建立非行為性的關注點,稱為橫切關注點,並將它們插入到應用程式代碼中。使用 AOP 後,公用服務 (比 如日誌、持久性、事務等)就可以分解成方面並應用到域對象上,同時不會增加域對象的物件模型的複雜性。<br /> IOC 允許建立一個可以構造對象的應用環境,然後向這些對象傳遞它們的協作對象。正如單詞 倒置 所表明的,IOC 就像反 過來的 JNDI。沒有使用一堆抽象工廠、服務定位器、單元素(singleton)和直接構造(straight construction),每一個對象都是用其協作物件建構的。因此是由容器管理協作對象(collaborator)。<br />Spring即使一個AOP架構,也是一IOC容器。 Spring 最好的地方是它有助於您替換對象。有了 Spring,只要用 JavaBean 屬性和設定檔加入依賴性(協作對象)。然後可以很容易地在需要時替換具有類似介面的協作對象。}</p><p>轉:http://topic.csdn.net/u/20081207/22/6d6b75f8-3988-484c-ab4f-f388869b2f00.html