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

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 左云县| 塔城市| 昭通市| 明水县| 黔西县| 凌海市| 库车县| 永春县| 海盐县| 正安县| 昭平县| 秦皇岛市| 安化县| 北辰区| 怀化市| 通江县| 射阳县| 德兴市| 甘孜县| 嘉峪关市| 临夏县| 阿拉善右旗| 灵寿县| 仪陇县| 湾仔区| 巩留县| 志丹县| 壤塘县| 赣榆县| 雅江县| 大庆市| 叶城县| 麦盖提县| 安仁县| 嘉祥县| 宜兴市| 喀喇| 颍上县| 昭苏县| 林州市| 吉隆县|