2017-06-04 143 views
4

我的數據庫背景來自Django框架(python)。在Django中,開始數據庫遷移非常簡單:Django migrations。 Django框架提供了基於模型創建遷移的工具,也是一種在數據庫上應用遷移的工具。我認爲這種做法既適用於開發,也適用於生產。您不必親自編寫遷移,該框架爲您創建了它們。如何在Spring Boot中使用Hibernate處理數據庫遷移?

現在我已經開始了一個Spring Boot和Hibernate的項目。我將我的應用程序配置爲在JPA中使用hibernate。有了這些設置,我現在需要知道我的框架如何處理數據庫遷移?我的意思是,如果我更改了一列,或者它是類型的,或者甚至可能將其刪除,那麼如何將數據庫遷移到更改?我知道春季啓動會自動檢測啓動時的列更改,並根據模型(實體的)創建不存在的列。我猜它是與可變

spring.jpa.hibernate.ddl-汽車

但它是如何處理現有的數據庫對象?它是否也將列添加到它們,以及具有什麼價值?我設定的默認值?如果我更改列類型會怎麼樣?它可以處理這個變化嗎?從長遠來看,這些設置和spring-boot自動化數據庫管理可能還不夠?

我想知道的是,如何使用Spring Boot和Hibernate組合來處理數據庫遷移的最佳實踐是什麼?我相信有一個標準,這個組合的大多數人如何處理遷移?我希望它像Django一樣容易......我知道flyway,但不知道我是否真的需要它,或者如果它與我的這種組合(包括spring boot和hibernate)有很大關係。

+2

是的,Flyway和liquibase都是很好的數據庫遷移工具。你使用spring和hibernate的事實是無關緊要的。如果你需要遷移數據庫,他們是不錯的選擇。 ddl-auto不是數據庫遷移工具。它只是一個快速入門的方法,並從頭開始生成一個模式,恕我直言。不是我曾經用過的產品。 –

回答

5

Liquibase或Flyway是版本控制/處理數據庫遷移的兩個主要選項。 ddl-auto是快速和骯髒的,但它不,也不能考慮需要處理的所有事情。這也是競爭條件的機會(兩個實例試圖同時更新DDL)。

這個答案在生產環境中更詳細地介紹了ddl-auto,爲什麼你不應該這樣做。

Hibernate: hbm2ddl.auto=update in production?

https://www.credera.com/blog/technology-insights/java/liquibase-fed-inconsistent-schemas/對爲什麼/概念的更多信息位。

相關問題