魔獸傳奇

          java程序愛好者
          posts - 28, comments - 16, trackbacks - 0, articles - 6
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(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.    對(duì)JDBC訪問數(shù)據(jù)庫(kù)的代碼做了封裝,大大簡(jiǎn)化了數(shù)據(jù)訪問層繁瑣的重復(fù)性代碼。
          2.    Hibernate是一個(gè)基于JDBC的主流持久化框架,是一個(gè)優(yōu)秀的ORM實(shí)現(xiàn)。他很大程度的簡(jiǎn)化DAO層的編碼工作
          3.    hibernate使用Java反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來(lái)實(shí)現(xiàn)透明性。
          4.    hibernate的性能非常好,因?yàn)樗莻€(gè)輕量級(jí)框架。映射的靈活性很出色。它支持各種關(guān)系數(shù)據(jù)庫(kù),從一對(duì)一到多對(duì)多的各種復(fù)雜關(guān)系。
           

          2.   Hibernate是如何延遲加載?
          1.         Hibernate2延遲加載實(shí)現(xiàn):a)實(shí)體對(duì)象  b)集合(Collection)
          2.         Hibernate3 提供了屬性的延遲加載功能

          當(dāng)Hibernate在查詢數(shù)據(jù)的時(shí)候,數(shù)據(jù)并沒有存在與內(nèi)存中,當(dāng)程序真正對(duì)數(shù)據(jù)的操作時(shí),對(duì)象才存在與內(nèi)存中,就實(shí)現(xiàn)了延遲加載,他節(jié)省了服務(wù)器的內(nèi)存開銷,從而提高了服務(wù)器的性能。

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



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

           

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

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

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

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

          5.Dispathcher查詢一個(gè)或多個(gè)ViewResolver視圖解析器,找到ModelAndView對(duì)象指定的視圖對(duì)象

          6.視圖對(duì)象負(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ū)ο蟮膶?duì)象模型的復(fù)雜性。

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

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


          評(píng)論

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

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 兰坪| 望都县| 锦州市| 磐石市| 玉溪市| 科技| 含山县| 老河口市| 玛多县| 康保县| 祁连县| 正安县| 泰州市| 诸暨市| 淳化县| 湘潭县| 兰坪| 利川市| 时尚| 丹江口市| 湾仔区| 弋阳县| 青铜峡市| 永丰县| 凌云县| 台东县| 同江市| 许昌县| 隆子县| 宣武区| 时尚| 双鸭山市| 太和县| 定安县| 平南县| 清丰县| 琼中| 松桃| 彰化市| 青神县| 固始县|