亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

springboot中使用jpa下hibernate的ddl-auto方式

 更新時間:2022年02月25日 09:41:59   作者:小丫頭姍珊  
這篇文章主要介紹了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, derbycreate-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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論