<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Flyingis

    Talking and thinking freely !
    Flying in the world of GIS !
    隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
    數(shù)據(jù)加載中……

    Hibernate的靈活與方便

        作者:Flyingis

        許多軟件設(shè)計的思維都源于生活的方方面面,可能存在某些設(shè)計思想并非受平時生活所啟迪,但它們面臨的情況卻如此相象。軟件設(shè)計原本就是生活的一部分,軟件設(shè)計的“靈活”與“方便”(或“簡便”)即是世界萬物的一個共同點。

        Hibernate作為流行的企業(yè)應(yīng)用和關(guān)系數(shù)據(jù)庫之間的持久化中間件,受到越來越多的關(guān)注。雖然使用Hibernate可以使得項目易于維護(hù),幫助開發(fā)人員更好地處理復(fù)雜關(guān)系模型,提供了很強的方便性,但卻失去了JDBC原有的靈活性。如何在“靈活”與“方便”之間取舍、平衡顯得重要起來。

        不久前江南白衣的一篇文章ORM透明持久化方案面對的共同困境道出了現(xiàn)在ORM不盡如人意的地方,除了網(wǎng)上,還有書本的前言等對Hibernate的眾多贊美之詞外,現(xiàn)在討論它呆板、配置繁瑣的聲音也逐漸多了起來,最熱鬧的就是前段時間Ruby on Rails引起J2EE陣營的騷動。個人對Java研究尚淺,對Hibernate有一些使用心得,下面所列出的不一定是Hibernate本身的缺陷,不足之處希望大家拍磚指出。

    1.  提取表單中字典Value的不便。
        字典一般由ID和NAME兩個字段組成,其ID號存儲于數(shù)據(jù)庫其他表中,當(dāng)查詢這些表信息時,Hibernate以List或Set形式返回的結(jié)果,沒有辦法將ID號顯示為對應(yīng)的NAME。在JDBC中,可以直接通過Map來存儲字典,通過map.getValue()來返回字典的值。

    2.  Hibernate內(nèi)置映射類型復(fù)雜化
        在開發(fā)過程中,時常會查找Hibernate映射類型--Java類型--標(biāo)準(zhǔn)SQL類型之間的關(guān)系。繁雜之處體現(xiàn)在兩方面,一是各種數(shù)據(jù)庫的數(shù)據(jù)類型和標(biāo)準(zhǔn)SQL之間會有一定的出入,二是Hibernate映射類型雖然大部分和Java類型相同,但也存在比較晦澀的地方,例如character類型對應(yīng)Java的char / java.lang.Character / java.lang.String,text對應(yīng)著Java的java.lang.String。

    3.  ID規(guī)定化生成
        Hibernate中內(nèi)置標(biāo)識符生成器給表單ID自動生成提供了方便,但卻不能自定義各種ID形式。開發(fā)過程中,有時需要特定的ID號來區(qū)分各種字典,例如字典1的ID號為1A,2A……,字典2的ID號為1B,2B……,當(dāng)這些ID號存儲在表單中時,可以方便開發(fā)人員在數(shù)據(jù)庫中查找各表單存儲各類字典數(shù)據(jù)的情況,方便調(diào)試,但使用Hibernate生成器就失去了這種靈活性。

        Hibernate的不足網(wǎng)上已有很多討論,以上只是個人增加的幾點體會。即使這樣,Hibernate仍是一款優(yōu)秀的持久層插件,只是“靈活”的背后隱藏著“復(fù)雜”,“方便”的背后隱藏著“不便”,如何取舍與平衡,還是看實際需要吧。

    posted on 2006-01-14 10:22 Flyingis 閱讀(2732) 評論(5)  編輯  收藏 所屬分類: Hibernate

    評論

    # re: Hibernate的靈活與方便  回復(fù)  更多評論   

    Hibernate不能自定義生成UUID??接觸不太多,但印象中好像可以通過繼承來創(chuàng)建自己UUID生成的類吧?
    2006-01-14 10:55 | 漢尼

    # re: Hibernate的靈活與方便  回復(fù)  更多評論   

    uuid.hex用一個128-bit的UUID算法生成字符串類型的標(biāo)識符。在一個網(wǎng)絡(luò)中唯一(使用了IP地址)。UUID被編碼為一個32位16進(jìn)制數(shù)字的字符串,它包含:IP地址,JVM的啟動時間(精確到1/4秒),系統(tǒng)時間和一個計數(shù)器值(在JVM中唯一)。要完全自定義的ID好像沒有看到比較直接的方法。
    2006-01-14 11:02 | Flyingis

    # re: Hibernate的靈活與方便  回復(fù)  更多評論   


    1.可以使用formula來操作: <property name="name" formula="( select s.name from yourtable s where s.id = id )" type="java.lang.String">

    3.可以自己寫id生成器。




    2006-01-16 11:00 | lizongbo

    # re: Hibernate的靈活與方便  回復(fù)  更多評論   

    理解偏差吧, ID本來就不應(yīng)該帶業(yè)務(wù)規(guī)則,這是數(shù)據(jù)庫設(shè)計的基本啊.

    2006-01-16 11:12 | nickey

    # re: Hibernate的靈活與方便  回復(fù)  更多評論   

    @ lizongbo
    感謝你對第一點提供的思路。
    id生成器我就是自己寫的來滿足項目這種需要。具體見
    http://m.tkk7.com/flyingis/archive/2005/11/06/18471.html

    ◎ nickey
    數(shù)據(jù)庫設(shè)計我不熟,但I(xiàn)D寫成1A,2A等等對設(shè)計有什么不好的影響嗎?
    2006-01-16 21:07 | Flyingis
    主站蜘蛛池模板: 亚洲Av无码国产情品久久 | 亚洲av成人一区二区三区| 男女免费观看在线爽爽爽视频 | 四虎影视在线永久免费看黄| 中文字幕亚洲男人的天堂网络| 蜜臀AV免费一区二区三区| 久久不见久久见免费影院| 亚洲中文字幕人成乱码| 无码国产精品一区二区免费式影视 | 国产美女无遮挡免费视频网站 | 亚洲精品在线免费看| 男女做羞羞的事视频免费观看无遮挡| 亚洲一级视频在线观看| 免费a级毛片高清视频不卡| 亚洲卡一卡二卡乱码新区| 女人被免费视频网站| 337P日本欧洲亚洲大胆艺术图| 免费v片视频在线观看视频| 一个人看的www免费在线视频| 久久夜色精品国产亚洲av| 国产免费网站看v片在线| 亚洲视频在线播放| 100部毛片免费全部播放完整| 久久精品亚洲AV久久久无码| 日本久久久免费高清| 精品一区二区三区免费观看 | 亚洲男女性高爱潮网站| 日韩精品无码人妻免费视频 | 99久久国产免费-99久久国产免费 99久久国产免费中文无字幕 | 夜夜爽免费888视频| 特a级免费高清黄色片| 亚洲精品~无码抽插| 精品福利一区二区三区免费视频| 亚洲精品国产综合久久久久紧| 伊人久久亚洲综合影院| 久久大香伊焦在人线免费| 亚洲国产精品一区二区三区在线观看| 国产免费av片在线无码免费看| 国产无遮挡裸体免费视频在线观看 | yy6080亚洲一级理论| 亚欧免费一级毛片|