2017-05-11 105 views
1

在我的Java EE應用程序使用不同的值hibernate.hbm2ddl.auto,我總是配置我persistence.xml文件使用此選項:如何在生產環境中

<property name="hibernate.hbm2ddl.auto" value="create-drop"> 

這對於測試非常方便。當我提交我的代碼時,persistence.xml將使用此配置提交。但是,當我部署到生產環境時,我不想丟棄數據庫。

如何克服這個問題?

回答

1

您不應該將hibernate.hbm2ddl.auto用於企業應用程序。如果在生產和集成測試中使用Flyway則更好。

就是說,即使使用像H2這樣的內存數據庫也是不可取的。如果您按照this article中的說明在tmpfs上映射數據文件夾,那麼您可以在H 2和PostgreSQL上運行集成測試,幾乎與H 2一樣快。

所以,回到你的問題。如果你真的需要重新創建僅在測試ENV而不是生產的表,那麼你需要使用Maven的參數爲hibernate.hbm2ddl.auto屬性:

<property name="hibernate.hbm2ddl.auto" value="${hbm2ddl.value}"> 

壓型,其值爲:

<hbm2ddl.value>none</hbm2ddl.value> 

雖然發展概況(默認值),該值是:

<hbm2ddl.value>create-drop</hbm2ddl.value> 
+0

謝謝,遷飛路線似乎是最乾淨的選擇! – MMacphail