posts - 70,comments - 408,trackbacks - 0
                Hibernate基礎(chǔ)知識(shí),談到這里,首先最重要的是應(yīng)該理解ORM,ORM是什么呢?3個(gè)單詞的縮寫(xiě),Object-Relation Mapping,既對(duì)象-關(guān)系映射的意思.這是一種模式,這種模式在單個(gè)組件中負(fù)責(zé)說(shuō)有實(shí)例業(yè)務(wù)對(duì)象的持久化,封裝了數(shù)據(jù)庫(kù)訪問(wèn)的細(xì)節(jié),這就是Hibernate的核心原理.ORC解決主要的問(wèn)題就是對(duì)象-關(guān)系映射.因?yàn)轫?xiàng)目的業(yè)務(wù)邏輯模型是面向?qū)ο蟮?而關(guān)系型數(shù)據(jù)模型是面向關(guān)系的,所以Hibernate把一個(gè)持久化的類(lèi)和數(shù)據(jù)庫(kù)中的一張表對(duì)應(yīng),類(lèi)的每一個(gè)實(shí)例對(duì)應(yīng)這個(gè)表的一條記錄.類(lèi)的每一個(gè)屬性,對(duì)應(yīng)這表里的一個(gè)字段.這樣就把一個(gè)對(duì)象和一個(gè)關(guān)系型數(shù)據(jù)表映射在了一起,這就是ORM模式.
                在Hibernate開(kāi)發(fā)的文檔里,把Hibernate定義成了一種對(duì)JDBC做了輕量級(jí)封裝的對(duì)象-關(guān)系映射工具.所謂輕量級(jí)封裝就是指沒(méi)有完全的把JDBC封裝,我們的程序還可以繞過(guò)Hibernate層直接訪問(wèn)數(shù)據(jù)庫(kù).下面是Hbernate的幾個(gè)接口,其中前5個(gè)是核心接口,后3個(gè)是回調(diào)接口.
                1)Configuration:配置Hibernate,啟動(dòng)Hibernate,創(chuàng)建SessionFactory工廠對(duì)象.
                2)SessionFactory:初始化Hibernate,創(chuàng)建Session對(duì)象.它是線程安全的,就是說(shuō)可以多個(gè)線程共同操作這個(gè)對(duì)象,而且是重量級(jí)的,在緩存中存儲(chǔ)的大量的SQL語(yǔ)句和映射元素?cái)?shù)據(jù).所以這個(gè)對(duì)象我們不能輕易的創(chuàng)建和銷(xiāo)毀,一個(gè)數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)SessionFactor工廠對(duì)象.
                3)Session:負(fù)責(zé)保存,修改,刪除,查詢(xún)和加載對(duì)象.這個(gè)Sessin不是線程安全的,所以我們要避免多個(gè)線程共享一個(gè)Session,這個(gè)Session是輕量級(jí)的,就是說(shuō)創(chuàng)建和銷(xiāo)毀這個(gè)Session不需要消耗太多的系統(tǒng)資源.
                4)Transaction:事務(wù)管理.
                5)Query:執(zhí)行數(shù)據(jù)庫(kù)查詢(xún).Query接口包裝了一個(gè)HQL語(yǔ)句,和SQL語(yǔ)句很相似,但是HQL語(yǔ)句是面向?qū)ο蟮?它引用類(lèi)名和屬性名,而不是表明和字段名.還有一個(gè)接口Criteria完全封裝了基于字符串形式的查詢(xún)語(yǔ)句,比Query接口更加面向?qū)ο?擅長(zhǎng)動(dòng)態(tài)的查詢(xún).
                6)Lifecycle:持久化類(lèi)實(shí)現(xiàn)的接口,讓它的實(shí)例能響應(yīng)被加載,保存,刪除的事件.
                7)Validatable:讓持久化類(lèi)的實(shí)例保存之前進(jìn)行數(shù)據(jù)的驗(yàn)證,不過(guò)這個(gè)不推薦使用,因?yàn)閿?shù)據(jù)驗(yàn)證是業(yè)務(wù)邏輯層的事情,而且這種方式強(qiáng)迫持久化類(lèi)必須實(shí)現(xiàn)Hibernate的特定接口,會(huì)影響持久化類(lèi)的可移植性,因此不推薦使用.
                8)Interceptor:Interceptor的實(shí)現(xiàn)類(lèi)負(fù)責(zé)響應(yīng)持久化類(lèi)的實(shí)例被加載,保存,刪除,更新等事件.
                
                還有一個(gè)比較重要的接口Type映射類(lèi)型接口,用于把對(duì)象中的屬性,映射為數(shù)據(jù)庫(kù)中的字段.Type接口提供了各種實(shí)現(xiàn)的類(lèi).他們代表了Hibernate的映射類(lèi)型.
                1)PrimitiveType類(lèi):原始映射類(lèi)型,映射了JAVA的基本類(lèi)型.包括ByteType,ShortTyep,IntegerType,LongType,DoubleType,CharacterType,BooleanTyep
                2)DateType類(lèi):映射了JAVA的日期類(lèi)型.
                3)BinaryType類(lèi):映射了Byte[]數(shù)字類(lèi)型.
                這里,我們的應(yīng)用程序不必自己創(chuàng)建Type實(shí)例,而是通過(guò)Hibernate這個(gè)類(lèi),訪問(wèn)它的靜態(tài)Type實(shí)例.例如Hibernate.STRING的形式訪問(wèn)StringType實(shí)例.還可以實(shí)現(xiàn)UserType或者CompositeUserType這兩個(gè)接口,來(lái)定義用戶(hù)自己的映射類(lèi)型.
                還有一類(lèi)接口是可擴(kuò)展接口,比如Hibernate的方言抽象類(lèi),指定緩存機(jī)制的Cache接口等等.這些因?yàn)槲乙恢币矝](méi)用到過(guò)所以就不在這里說(shuō)明了.想了解它的朋友可以查閱相關(guān)的資料.
          posted on 2007-05-16 15:10 我心依舊 閱讀(3869) 評(píng)論(5)  編輯  收藏

          FeedBack:
          # re: Hibernate基礎(chǔ)知識(shí)
          2007-05-16 15:39 | 心隨Wǒ動(dòng)
          哈哈,不錯(cuò).不過(guò)我看不懂.嘿嘿!  回復(fù)  更多評(píng)論
            
          # re: Hibernate基礎(chǔ)知識(shí)
          2007-05-17 13:45 |
          很全面,有例子就好了,謝謝  回復(fù)  更多評(píng)論
            
          # re: Hibernate基礎(chǔ)知識(shí)
          2007-05-19 10:20 | L2
          不錯(cuò)!
          期待Hibernate相關(guān)文章  回復(fù)  更多評(píng)論
            
          # re: Hibernate基礎(chǔ)知識(shí)
          2008-03-27 20:59 | 迎風(fēng)十八刀
          不錯(cuò)啊 ,我正好學(xué)這個(gè),期待樓主繼續(xù)發(fā)這方面文章  回復(fù)  更多評(píng)論
            
          # re: Hibernate基礎(chǔ)知識(shí)
          2009-12-15 20:23 | sfafafa
          很不好,以上是你自己評(píng)價(jià)自己的吧  回復(fù)  更多評(píng)論
            

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 城市| 合作市| 卫辉市| 朝阳市| 富民县| 射阳县| 贵州省| 栾城县| 滁州市| 泰和县| 诏安县| 汝南县| 宜春市| 平度市| 东阳市| 灵石县| 海晏县| 松潘县| 桐梓县| 旌德县| 黔南| 安顺市| 泰安市| 光泽县| 礼泉县| 民县| 余姚市| 屯昌县| 墨玉县| 湘潭市| 清镇市| 棋牌| 建宁县| 潮安县| 名山县| 嵩明县| 平安县| 宁陕县| 台江县| 易门县| 西畴县|