(轉(zhuǎn))hibernate自動(dòng)建表的配置

hibernate支持自動(dòng)建表,在開發(fā)階段很方便,可以保證hbm與數(shù)據(jù)庫(kù)表結(jié)構(gòu)的自動(dòng)同步。

如何使用呢?很簡(jiǎn)單,只要在hibernate.cfg.xml里加上如下代碼

Xml代碼update

update:表示自動(dòng)根據(jù)model對(duì)象來(lái)更新表結(jié)構(gòu),啟動(dòng)hibernate時(shí)會(huì)自動(dòng)檢查數(shù)據(jù)庫(kù),如果缺少表,則自動(dòng)建表;如果表里缺少列,則自動(dòng)添加列。

還有其他的參數(shù):

create:?jiǎn)?dòng)hibernate時(shí),自動(dòng)刪除原來(lái)的表,新建所有的表,所以每次啟動(dòng)后的以前數(shù)據(jù)都會(huì)丟失。

create-drop:?jiǎn)?dòng)hibernate時(shí),自動(dòng)創(chuàng)建表,程序關(guān)閉時(shí),自動(dòng)把相應(yīng)的表都刪除。所以程序結(jié)束時(shí),表和數(shù)據(jù)也不會(huì)再存在。

PS:數(shù)據(jù)庫(kù)要預(yù)先建立好,因?yàn)閔ibernate只會(huì)建表,不會(huì)建庫(kù)

==========================================

表結(jié)構(gòu)和數(shù)據(jù)總是在程序執(zhí)行的時(shí)候無(wú)端的修改,折騰了好長(zhǎng)時(shí)間,查了很長(zhǎng)時(shí)間hibernate的數(shù)據(jù)庫(kù)映射文件和接口程序,始終沒有發(fā)現(xiàn)有什么錯(cuò)誤,到最后才發(fā)現(xiàn)了它!

解釋如下:

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)

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

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

如果發(fā)現(xiàn)數(shù)據(jù)庫(kù)表丟失或新增,請(qǐng)檢查hibernate.hbm2ddl.auto的配置 可設(shè)置

建議在開發(fā)環(huán)境下使用,在生產(chǎn)環(huán)境下去掉。

優(yōu)點(diǎn):

1、自動(dòng)創(chuàng)建新表

2、自動(dòng)創(chuàng)建新字段

3、自動(dòng)修改字段類型

缺點(diǎn):

1、不會(huì)自動(dòng)刪除表

2、不會(huì)自動(dòng)刪除字段

3、自動(dòng)創(chuàng)建的新字段只能是在最后。

針對(duì)缺點(diǎn)的建議:定期把數(shù)據(jù)庫(kù)清空(刪除所有表),然后啟動(dòng)項(xiàng)目,讓hibernate自動(dòng)創(chuàng)建表結(jié)構(gòu)和索引,當(dāng)然一些初始化數(shù)據(jù)需要手工導(dǎo)入。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,637評(píng)論 18 399
  • Hibernate: 一個(gè)持久化框架 一個(gè)ORM框架 加載:根據(jù)特定的OID,把一個(gè)對(duì)象從數(shù)據(jù)庫(kù)加載到內(nèi)存中OID...
    JHMichael閱讀 2,090評(píng)論 0 27
  • Hibernate中配置主要分為兩種:一種包含了Hibernate與數(shù)據(jù)庫(kù)的基本連接信息,在Hibernate工作...
    FTOLsXD閱讀 2,215評(píng)論 0 10
  • 目錄 1. Hibernate框架的概述 1.1 Hibernate簡(jiǎn)介 1.2 為什么要學(xué)習(xí)Hibernate ...
    深海魚Q閱讀 1,118評(píng)論 0 14
  • 作者——無(wú)名 在生活中我們不會(huì)隨便和別人聊起自己對(duì)某件事的看法,但是有了社交媒體以后,我們的大腦像是裝上了一扇窗,...
    鷺風(fēng)閱讀 1,258評(píng)論 2 3

友情鏈接更多精彩內(nèi)容