posts - 7,  comments - 58,  trackbacks - 0
          struts與hibernate集成開發(fā)
          最近學(xué)習(xí)struts與hibernate相關(guān)知識(shí),下面是個(gè)人對(duì)struts與hibernate集成開發(fā)的一些見解,寫出來跟大家共同討論、學(xué)習(xí),歡迎指教。
           要集成struts與hibernate進(jìn)行開發(fā),首先應(yīng)該了解一下struts和hibernate框架各自的工作原理和模式般的開發(fā)流程。
          首先介紹struts的大概工作流程,下面通過一張struts工作的時(shí)序圖來說明其工作流程:

          Struts工作流程分析:
          1)Web服務(wù)器啟動(dòng),初始化ActionServlet,讀取struts-config.xml文件配置信息,把這些信息分發(fā)到相應(yīng)的對(duì)象中。
          2)用戶發(fā)出請(qǐng)求后,ActionServlet接收到請(qǐng)求,查找與請(qǐng)求匹配的Action映射對(duì)象(ActionMapping)對(duì)象是否存在,是:將請(qǐng)求以及Actionform對(duì)象傳遞給相應(yīng)的Action對(duì)象。
          3)Action調(diào)用業(yè)務(wù)邏輯服務(wù)接口,結(jié)合ActionForm,對(duì)用戶的請(qǐng)求做出處理。
          4)Action處理完畢返回ActionForward對(duì)象給ActionServlet。ActionForward對(duì)象包含了轉(zhuǎn)發(fā)目標(biāo)對(duì)象,可以是jsp或Action。
          5)ActionServlet根據(jù)ActionForward對(duì)象的指向繼續(xù)轉(zhuǎn)發(fā)請(qǐng)求,重復(fù)從第2步進(jìn)行處理。
          至此,我們對(duì)struts 的基本工作流程有個(gè)整體的認(rèn)識(shí),但還沒提hibernate相關(guān)的任何知識(shí),業(yè)務(wù)邏輯層也只是在第3)點(diǎn)微提一下。

          接下來,我們來看下hibernate是怎樣工作的?(注:在這不是討論ORM的實(shí)現(xiàn),只討論怎讓hibernate這ORM中間件工作)
          Hibernate是個(gè)獨(dú)立的框架,它不依賴任何的Web Server或Application Server,就是說不需要這些支持。
          Hibernate有五個(gè)核心接口,分別為Configuratoin, SessionFactory, Session,Query及Criteria。通過這些接口就可以完成hibernate的初始化,對(duì)持久化對(duì)象進(jìn)行存取,更新等操作。
          下面簡(jiǎn)要介始一下這些接口。
          1、Configuration接口 是Hibernate應(yīng)用的入口,在開始使用Hibernate的各種功能之前需要先創(chuàng)建Configuration對(duì)象。它負(fù)責(zé)加載Hibernate 應(yīng)用配置文件,如Configuration cf = new Configuration.configure("com/myproj/hibernate/configs/hibernate.cfg.xml");
          2、SessionFactory接口 緩存了Configuration對(duì)象所包含的配置信息,能根據(jù)映射信息自動(dòng)生成SQL語(yǔ)句,并提供生成Session對(duì)象的方法。
          3、Session接口提供一系列持久化的操作。
          到此,可以寫一小段代碼來加看下如何使用hibernate
          Configuration cf = new Configuration.configure("com/myproj/hibernate/configs/hibernate.cfg.xml");//配置文件不在此作介紹
          SessionFactory sessionFactory = cf.buildSessionFactory();
          Session session = sessionFactory.openSession();
          session.update();
          session.save();等等持久化操作。
          至此,簡(jiǎn)單介紹了hibernate 是怎樣工作的,其實(shí)我只想讓你清楚:“Hibernate是個(gè)獨(dú)立的框架,它不依賴任何的Web Server或Application Server,就是說不需要這些支持。”

          那么,我們要回到主題來:如何集成struts與hibernate開發(fā)?答案很簡(jiǎn)單:hibernate和struts本質(zhì)上是沒什么聯(lián)系的,只要你記?。?span style="color: red">Hibernate是個(gè)獨(dú)立的框架,它不依賴任何的Web Server或Application Server。用DAO模式把hibernate持久化的操作封裝好,供業(yè)務(wù)邏輯服務(wù)類調(diào)用就可以?;剡^頭來看struts工作流時(shí)序圖的解釋的第三點(diǎn):“3)Action調(diào)用業(yè)務(wù)邏輯服務(wù)接口,結(jié)合ActionForm,對(duì)用戶的請(qǐng)求做出處理。”,不難得出:
          用戶請(qǐng)求后,struts負(fù)責(zé)找到相應(yīng)的Action對(duì)象,Action調(diào)用業(yè)務(wù)邏輯服務(wù)接口,業(yè)務(wù)邏輯服務(wù)接口調(diào)用DAO接口(這里默認(rèn)的實(shí)現(xiàn)就用hibernate,當(dāng)然, 還可以有多種對(duì)數(shù)據(jù)庫(kù)操作的實(shí)現(xiàn))
          hibernate充當(dāng)下面這張圖中的"持久層(DAO)"


          由于本人對(duì)struts及hibernate認(rèn)識(shí)不深,寫這篇文章只是拋磚引玉,希望高手們發(fā)表意見指正錯(cuò)誤,多指教。





          posted on 2008-02-29 18:44 Sonny Li 閱讀(1003) 評(píng)論(0)  編輯  收藏 所屬分類: 框架相關(guān)

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2008年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          2425262728291
          2345678

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          相冊(cè)

          收藏夾

          博客好友

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 六枝特区| 闻喜县| 积石山| 双辽市| 香港| 义乌市| 吕梁市| 泰州市| 松滋市| 太白县| 洞头县| 富阳市| 菏泽市| 嘉黎县| 汉源县| 汉中市| 山阳县| 晋江市| 营口市| 饶阳县| 柯坪县| 当雄县| 本溪市| 昭苏县| 清丰县| 山西省| 武汉市| 肃宁县| 佛山市| 金沙县| 融水| 鄱阳县| 全椒县| 奇台县| 巴彦淖尔市| 五台县| 和林格尔县| 崇文区| 乌兰浩特市| 武陟县| 弋阳县|