在一个spring-data-jpa
项目测试的时候,有一些表掉到了开发环境中,负责这个表的开发人员说只使用了spring.jpa.hibernate.ddl-auto=update
,查到这里,我怀疑他把它设置成了create-drop
,但是他说他没有使用,所以我查了这个信息:
Boot 根据它是否认为数据库是嵌入式的来为您选择默认值。如果没有检测到模式管理器,它默认为create-drop
由于他的应用程序实际上设法连接到我们的开发环境PostgreSQL数据库(因为它删除了一些表),我开始认为他可能忘记设置hbm2ddl.auto
,并自动设置为create-drop
。
有没有可能连接到PostgreSQL却没有定义一个有效的模式管理器?最常见的模式管理器是什么?
PS:在此应用程序中,@DataSource
设置为:
@Bean
public DataSource dataSource() {
Class.forName("org.postgresql.Driver");
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUrl(someUrlConnectionStringFromApplicationDotPropertiesFile);
return dataSource;
}
我知道spring-data-jpa
会自动设置所有带有spring jpa属性的东西,而不需要这个方法,这是目前不可更改的遗留代码:(
1条答案
按热度按时间56lgkhnf1#
Sping Boot 说他们是更高级别的数据库迁移工具(Flyway或Liquibase)。参考:https://docs.spring.io/spring-boot/docs/2.7.x/reference/html/howto.html#howto.data-access.jpa-properties,https://docs.spring.io/spring-boot/docs/2.7.x/参考/html/如何操作。html#如何操作。数据访问。jpa属性
您也可以通过Sping Boot 文档或它们自己的docs. ref进行配置:https://docs.spring.io/spring-boot/docs/2.7.x/reference/html/howto.html#howto.data-initialization.migration-tool
例如,通过maven(https://flywaydb.org/download/community)配置Flyway社区版本: