Hibernate配置文件的hbm2ddl.auto屬性


今天遇到一個有意思的問題,我目前做的一個網站采用Spring MVC + Spring + Hibernate的架構,我通過頁面插入了一些數據到數據庫,可是每次重啟tomcat之后,數據都莫名其妙地丟失了,但是我確定數據庫中原本是有數據的,數據一定是在應用服務器重啟之后被清除的,百思不得其解,忽然想到有可能是昨天修改了Hibernate配置文件導致的。

我的Hibernate配置文件:

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hbm2ddl.auto">create</property>
    </session-factory>
</hibernate-configuration>

問題就出在我把hbm2ddl.auto的值設為create了,根據Hibernate的文檔,hbm2ddl.auto有四個可選值:

定義
update 最常用的值,第一次加載hibernate時根據model類會自動建立起表的結構(前提是先建立好數據庫),以后加載hibernate時根據 model類自動更新表結構,即使表結構改變了但表中的行仍然存在不會刪除以前的行。要注意的是當部署到服務器后,表結構是不會被馬上建立起來的,是要等 應用第一次運行起來后才會
validate 每次加載hibernate時,驗證創建數據庫表結構,只會和數據庫中的表進行比較,不會創建新表,但是會插入新值
create 每次加載hibernate時都會刪除上一次的生成的表,然后根據你的model類再重新來生成新表,哪怕兩次沒有任何改變也要這樣執行
create-drop 每次加載hibernate時根據model類生成表,但是sessionFactory一關閉,表就自動刪除

如果你不確定如何設置這個值的話,就設置為“none”吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM