在我的Java EE应用程序中,我总是使用以下选项配置persistence.xml
文件:
<property name="hibernate.hbm2ddl.auto" value="create-drop">
测试非常方便。提交代码时,将使用此配置提交persistence.xml。但是,当我部署到生产环境时,我不想删除数据库。
如何克服这个问题?
最佳答案
切勿将hibernate.hbm2ddl.auto
用于企业应用程序。如果同时使用Flyway进行生产和集成测试,则更好。
话虽如此,甚至不希望使用像H2这样的内存数据库。如果按照this article中的说明在tmpfs上映射数据文件夹,则可以在MySQL和PostgreSQL上几乎与H2一样快地运行集成测试。
因此,回到您的问题。如果确实只需要在测试环境中而不是在生产环境中重新创建表,则需要对hibernate.hbm2ddl.auto
属性使用Maven参数:
<property name="hibernate.hbm2ddl.auto" value="${hbm2ddl.value}">
对于生产资料,值是:
<hbm2ddl.value>none</hbm2ddl.value>
而对于开发配置文件(默认),该值为:
<hbm2ddl.value>create-drop</hbm2ddl.value>