2014-06-15 29 views
2

我正在開發Spring/Hibernate/MySql應用程序。該應用程序還沒有生產,我目前使用Hibernate的hbm2ddl功能,這是非常方便的管理域的變化。我還打算使用Flyway進行數據庫遷移。使用Flyway和Hibernate的hbm2ddl在應用程序的生命週期中管理數據庫模式

在未來的某個時刻,應用程序將被投入生產的第一次,這導致我的第一組問題:

  • 什麼是用於創建模式的最佳實踐(第一次該應用程序已發佈到產品中)?特別是,我應該讓Hibernate的hbm2ddl在生產數據庫上創建模式還是讓Flyway使用SQL腳本創建第一個模式?如果第二個選項(即Flyway)更可取,那麼我應該從hbm2ddl創建的數據庫中生成SQL腳本嗎?

然後讓我們假設我的應用程序的第一個版本在生產環境中運行,並且打算使用Hibernate的hbm2ddl在第二個應用程序版本上繼續開發。

  • 我會如何管理更改域,尤其是對於計算釋放到生產兩個版本中遷移數據庫中的一個版本和數據庫架構兩個版本之間的區別?

回答

1

最好的權衡是使用hbm2ddl僅進行集成測試,並使用Flyway作爲運行時間,無論是QA測試還是生產環境。

您也可以使用hbmddl作爲第一個用於Flyway的腳本的基礎,但是隨後每當您對JPA模型進行更改時,都需要手動創建新的更新腳本,而這並不難。這也可以使用數據庫特定功能。

因爲集成測試和運行時使用不同的策略,所以必須編寫一個系統集成測試來比較由hbmddl和Flyway創建的模式。這也不難,只需要確保您與實際生產數據庫(而不是內存集成測試)進行比較。

相關問題