魔獸傳奇

          java程序愛好者
          posts - 28, comments - 16, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          工作原理
          1.         讀取并解析配置文件
          2.         讀取并解析映射信息,創(chuàng)建SessionFactory
          3.         打開Sesssion
          4.         創(chuàng)建事務(wù)Transation
          5.         持久化操作
          6.         提交事務(wù)
          7.         關(guān)閉Session
          8.         關(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)透明性。
          4.    hibernate的性能非常好,因?yàn)樗莻€(gè)輕量級(jí)框架。映射的靈活性很出色。它支持各種關(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)系)

          類與類之間的關(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中又叫一級(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)

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

           2.         靈活使用單向一對多關(guān)聯(lián)
          3.         不用一對一,用多對一取代
          4.         配置對象緩存,不使用集合緩存
          5.         一對多集合使用Bag,多對多集合使用Set
          6.         繼承類使用顯式多態(tài)
          7.         表字段要少,表關(guān)聯(lián)不要怕多,有二級(jí)緩存撐腰



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

           

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

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

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

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

          5.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ū)ο笊希瑫r(shí)不會(huì)增加域?qū)ο蟮膶ο竽P偷膹?fù)雜性。

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

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


          評(píng)論

          # re: Hibernate學(xué)習(xí)筆記2-工作原理  回復(fù)  更多評(píng)論   

          2011-02-17 15:27 by gege
          確實(shí)很好

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 宣武区| 雅江县| 嘉峪关市| 抚顺县| 封丘县| 莱阳市| 北京市| 安吉县| 白城市| 翁源县| 孟连| 英山县| 高阳县| 万载县| 沅江市| 扶绥县| 巴楚县| 和硕县| 翼城县| 静乐县| 定西市| 若羌县| 聂荣县| 南漳县| 双辽市| 天镇县| 独山县| 济阳县| 应用必备| 永登县| 上饶县| 隆德县| 胶南市| 赫章县| 常山县| 临湘市| 宁陕县| 葵青区| 张家口市| 肥城市| 岳阳县|