Hibernate.hbm2ddl.auto配置詳解

hibernate.hbm2ddl.auto配置詳解

hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置節(jié)點(diǎn)如下:

<properties>
     <property name="hibernate.show_sql" value="true" /> 
     <property name="hibernate.hbm2ddl.auto" value="create" />
</properties>

Hibernate Reference Documentation 3.3.1解釋如下:

Automatically validate or export schema DDL to the database when the SessionFactory is created.
With create-drop, the database schema will be dropped when the SessionFactory is closed explicitly.
eg. validate | update | create | create-drop

其實(shí)這個(gè)hibernate.hbm2ddl.auto參數(shù)的作用主要用于:

自動(dòng)創(chuàng)建|更新|驗(yàn)證數(shù)據(jù)庫(kù)表結(jié)構(gòu)

如果不是此方面的需求建議set value="none"姓言。

  • create:

    每次加載hibernate時(shí)都會(huì)刪除上一次的生成的表何荚,然后根據(jù)你的model類再重新來生成新表猪杭,哪怕兩次沒有任何改變也要這樣執(zhí)行,這就是導(dǎo)致數(shù)據(jù)庫(kù)表數(shù)據(jù)丟失的一個(gè)重要原因戒傻。

  • create-drop :

    每次加載hibernate時(shí)根據(jù)model類生成表,但是sessionFactory一關(guān)閉,表就自動(dòng)刪除芦倒。

  • update:

    最常用的屬性不翩,第一次加載hibernate時(shí)根據(jù)model類會(huì)自動(dòng)建立起表的結(jié)構(gòu)(前提是先建立好數(shù)據(jù)庫(kù)),以后加載hibernate時(shí)根據(jù) model類自動(dòng)更新表結(jié)構(gòu)器钟,即使表結(jié)構(gòu)改變了但表中的行仍然存在不會(huì)刪除以前的行妙蔗。要注意的是當(dāng)部署到服務(wù)器后,表結(jié)構(gòu)是不會(huì)被馬上建立起來的狞谱,是要等 應(yīng)用第一次運(yùn)行起來后才會(huì)跟衅。

  • validate :

    每次加載hibernate時(shí)播歼,驗(yàn)證創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu),只會(huì)和數(shù)據(jù)庫(kù)中的表進(jìn)行比較叭莫,不會(huì)創(chuàng)建新表烁试,但是會(huì)插入新值。

注意:

  • 當(dāng)我們把hibernate.hbm2ddl.auto=create時(shí)hibernate先用 hbm2ddl 來生成數(shù)據(jù)庫(kù)schema靖诗。

  • 當(dāng)我們把hibernate.cfg.xml文件中hbm2ddl屬性注釋掉支示,這樣我們就取消了在啟動(dòng)時(shí)用hbm2ddl來生成數(shù)據(jù)庫(kù)schema颂鸿。通常 只有在不斷重復(fù)進(jìn)行單元測(cè)試的時(shí)候才需要打開它,但再次運(yùn)行hbm2ddl會(huì)把你保存的一切都刪除掉(drop)败晴。

    <blockquote>create配置的含義是:“在創(chuàng)建SessionFactory的時(shí)候,從scema中drop掉所以的表裆蒸,再重新創(chuàng)建它們”糖驴。</blockquote>

注意,很多Hibernate新手在這一步會(huì)失敗辙谜,我們不時(shí)看到關(guān)于Table not found錯(cuò)誤信息的提問感昼。但是,只要你根據(jù)上面描述的步驟來執(zhí)行蜕琴,就不會(huì)有這個(gè)問題凌简,因?yàn)閔bm2ddl會(huì)在第一次運(yùn)行的時(shí)候創(chuàng)建數(shù)據(jù)庫(kù)schema恃逻, 后續(xù)的應(yīng)用程序重啟后還能繼續(xù)使用這個(gè)schema。假若你修改了映射凸郑,或者修改了數(shù)據(jù)庫(kù)schema,你必須把hbm2ddl重新打開一次矛市。


這兩天在整理Spring + JPA(Hibernate實(shí)現(xiàn)),從網(wǎng)上copy了一段Hibernate連接參數(shù)的配置憨愉。

<properties>
    <property name="hibernate.show_sql" value="true" /> 
    <property name="hibernate.hbm2ddl.auto" value="create" />
</properties>

結(jié)果在測(cè)試時(shí)思恐,老是發(fā)現(xiàn)數(shù)據(jù)庫(kù)表數(shù)據(jù)丟失。這個(gè)參數(shù)以前沒怎么用鸳址,查了一圈其它的東東,最后才定位到這個(gè)上面。趕緊查了一下Hibernate的參數(shù)配置籽懦,解釋如下:

hibernate.hbm2ddl.auto Automatically validate or export schema DDL to the database when the SessionFactory is
created. With create-drop, the database schema will be dropped when the SessionFactory is closed explicitly.
eg. validate | update | create | create-drop

其實(shí)這個(gè)參數(shù)的作用主要用于:自動(dòng)創(chuàng)建|更新|驗(yàn)證數(shù)據(jù)庫(kù)表結(jié)構(gòu)。如果不是此方面的需求建議set value="none".

其它幾個(gè)參數(shù)的意思厅篓,我解釋一下:

  • validate

    加載hibernate時(shí)羽氮,驗(yàn)證創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu)

  • create

    每次加載hibernate惫恼,重新創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu),這就是導(dǎo)致數(shù)據(jù)庫(kù)表數(shù)據(jù)丟失的原因令宿。

  • create-drop

    加載hibernate時(shí)創(chuàng)建腕窥,退出是刪除表結(jié)構(gòu)

  • update

    加載hibernate自動(dòng)更新數(shù)據(jù)庫(kù)結(jié)構(gòu)

以上4個(gè)屬性對(duì)同一配置文件下所用有的映射表都起作用

總結(jié):

  1. 請(qǐng)慎重使用此參數(shù),沒必要就不要隨便用革娄。

  2. 如果發(fā)現(xiàn)數(shù)據(jù)庫(kù)表丟失拦惋,請(qǐng)檢查hibernate.hbm2ddl.auto的配置

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末厕妖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子言秸,更是在濱河造成了極大的恐慌迎捺,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抄沮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡叛买,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門刻伊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捶箱,“玉大人蛾茉,你說我怎么就攤上這事∏妫” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵础爬,是天一觀的道長(zhǎng)看蚜。 經(jīng)常有香客問我,道長(zhǎng)供炎,這世上最難降的妖魔是什么疾党? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任雪位,我火速辦了婚禮,結(jié)果婚禮上雹洗,老公的妹妹穿的比我還像新娘。我一直安慰自己庇茫,他們只是感情好螃成,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著顷霹,像睡著了一般击吱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上朵纷,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天袍辞,我揣著相機(jī)與錄音,去河邊找鬼搅吁。 笑死落午,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的界拦。 我是一名探鬼主播梗劫,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蛉威!你這毒婦竟也來了猫妙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤齐帚,失蹤者是張志新(化名)和其女友劉穎彼哼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剪菱,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年旗们,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了上渴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喜颁。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖隔披,靈堂內(nèi)的尸體忽然破棺而出寂拆,到底是詐尸還是另有隱情,我是刑警寧澤漓库,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站痢士,受9級(jí)特大地震影響茂装,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜少态,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嫌佑。 院中可真熱鬧侨歉,春花似錦、人聲如沸幽邓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至担巩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涛癌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留假颇,地道東北人骨稿。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像形耗,于是被迫代替她去往敵國(guó)和親辙浑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Hibernate中配置主要分為兩種:一種包含了Hibernate與數(shù)據(jù)庫(kù)的基本連接信息,在Hibernate工作...
    FTOLsXD閱讀 2,032評(píng)論 0 10
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法侠草,類相關(guān)的語法,內(nèi)部類的語法晤碘,繼承相關(guān)的語法功蜓,異常的語法,線程的語...
    子非魚_t_閱讀 31,598評(píng)論 18 399
  • 本文包括: 1腮介、CRM 項(xiàng)目的整體介紹 2端衰、Hibernate 框架概述 3甘改、Hibernate 快速入門 4灭抑、H...
    廖少少閱讀 3,466評(píng)論 9 66
  • Hibernate: 一個(gè)持久化框架 一個(gè)ORM框架 加載:根據(jù)特定的OID,把一個(gè)對(duì)象從數(shù)據(jù)庫(kù)加載到內(nèi)存中OID...
    JHMichael閱讀 1,963評(píng)論 0 27
  • 原文 人在仕途腾节,比之退處山林時(shí),其工夫之難十倍庆冕,非得良友時(shí)時(shí)警發(fā)砥礪劈榨,則其平日之所志向,鮮有不潛移默奪同辣,馳然日就于...
    鴻圖大展閱讀 5,397評(píng)論 0 1