springboot中使用jpa下hibernate的ddl-auto方式
使用jpa下hibernate的ddl-auto
今天做一個報表的功能,發(fā)現(xiàn)一個表中的shopProductId都為null,但在程序中判斷用的是shopProductId,而且表中有productId不為null,在查找原因的途中,才得知是有人將productId改為了shopProductId,但是數(shù)據(jù)沒有更新過去。
遇到這種情況,我們怎么能查看到某些字段被改變了呢?
由于我們用的框架是springBoot+jap-hibernate,然后在jpa下的hibernate,在application配置文件中,有
ddl-auto的配置
ddl-auto:create
每次運行該程序,沒有表格會新建表格,表內有數(shù)據(jù)會清空ddl-auto:create-drop
每次程序結束的時候會清空表ddl-auto:update
每次運行程序,沒有表格會新建表格,表內有數(shù)據(jù)不會清空,只會更新ddl-auto:validate
運行程序會校驗數(shù)據(jù)與數(shù)據(jù)庫的字段類型是否相同,不同會報錯
把ddl-auto改為validate時,我們啟動項目時,會提示哪一個字段被更改,這樣我們在發(fā)布上線時,會及時發(fā)現(xiàn),不至于出現(xiàn)錯誤。而正常運行的時候,一般設置為update屬性。
spring.jpa.hibernate.ddl-auto的配置
spring.jpa.hibernate.ddl-auto 可以顯式設置 spring.jpa.hibernate.ddl-auto ,
標準的Hibernate屬性值有 none,validate,update,create,create-drop。
Spring Boot 會根據(jù)數(shù)據(jù)庫是否是內嵌類型,選擇一個默認值。
具體的關系見下
內嵌類型 | 數(shù)據(jù)庫名稱 | 默認值 |
---|---|---|
內嵌 | hsqldb, h2, derby | create-drop |
非內嵌 | 其他數(shù)據(jù)庫 | none |
spring.jpa.hibernate.ddl-auto的四個屬性的含義見下表:
屬性值 | 作用 |
---|---|
create | 每次加載hibernate時都會刪除上一次的生成的表,然后根據(jù)你的model類再重新來生成新表,哪怕兩次沒有任何改變也要這樣執(zhí)行,這就是導致數(shù)據(jù)庫表數(shù)據(jù)丟失的一個重要原因。 |
create-drop | 每次加載hibernate時根據(jù)model類生成表,但是sessionFactory一關閉,表就自動刪除。 |
update | 最常用的屬性,第一次加載hibernate時根據(jù)model類會自動建立起表的結構(前提是先建立好數(shù)據(jù)庫),以后加載hibernate時根據(jù) model類自動更新表結構,即使表結構改變了但表中的行仍然存在不會刪除以前的行。要注意的是當部署到服務器后,表結構是不會被馬上建立起來的,是要等應用第一次運行起來后才會。 |
validate | 每次加載hibernate時,驗證創(chuàng)建數(shù)據(jù)庫表結構,只會和數(shù)據(jù)庫中的表進行比較,不會創(chuàng)建新表,但是會插入新值。 |
此外,啟動時處于classpath根目錄下的 import.sql文件會被執(zhí)行(前提是ddl-auto屬性被設置為 create 或create-drop)。這在demos或測試時很有用,但在生產(chǎn)環(huán)境中可能不期望這樣。
這是Hibernate的特性,和Spring沒有一點關系。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Mybatis查詢返回Map<String,Object>類型實例詳解
這篇文章主要給大家介紹了關于Mybatis查詢返回Map<String,Object>類型的相關資料,平時沒太注意怎么用,今天又遇到了總結記錄一下,方便以后處理此類問題,需要的朋友可以參考下2022-07-07SpringBoot響應Json數(shù)據(jù)亂碼通過配置的解決
這篇文章主要介紹了SpringBoot響應Json數(shù)據(jù)亂碼通過配置的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11IDEA使用JDBC安裝配置jar包連接MySQL數(shù)據(jù)庫
這篇文章介紹了IDEA使用JDBC安裝配置jar包連接MySQL數(shù)據(jù)庫的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-01-01springboot快速整合Mybatis組件的方法(推薦)
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發(fā)過程。這篇文章主要介紹了springboot快速整合Mybatis組件的方法,需要的朋友可以參考下2019-11-11詳解ConcurrentHashMap如何保證線程安全及底層實現(xiàn)原理
這篇文章主要為大家介紹了ConcurrentHashMap如何保證線程安全及底層實現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05java實現(xiàn)fibonacci數(shù)列學習示例分享(斐波那契數(shù)列)
這篇文章主要介紹了fibonacci數(shù)列(斐波那契數(shù)列)示例,大家參考使用吧2014-01-01