我想使用兩種資料庫模式:一種是靜態資料(不能更改),另一種是動態資料(在 Spring 應用程式執行期間會不斷變化)。
在application.properties我規定了以下內容:
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/XXXXXX
spring.datasource.username=root
spring.datasource.password=root
spring.second-datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/YYYYYY
spring.second-datasource.username=root
spring.second-datasource.password=root
但是我現在應該如何處理spring.jpa.hibernate.ddl-auto引數?
對于我要安裝的一種方案:
spring.jpa.hibernate.ddl-auto=create
而對于另一個(資料始終是靜態的):
spring.jpa.hibernate.ddl-auto=update
或者
spring.jpa.hibernate.ddl-auto=none
uj5u.com熱心網友回復:
您有一個需要兩個不同資料源的問題。您應該將它們定義為 2 個不同的 bean 并分別自動裝配它們。為清楚起見,建議同時使用 2 個不同的屬性檔案。
您可以創建一個配置類并使用特定的屬性檔案來填充欄位,如下所示:
@Configuration
@PropertySource("classpath:db.properties")
public class Config {
@Value("${db.driverClassName}")
String driverClassName;
@Value("${db.url}")
String url;
@Value("${db.username}")
String username;
@Value("${db.password}")
String password;
@Bean("datasourceId")
public DataSource dataSource() {
var dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan(
{ "com.foo.bar" });
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
private final Properties hibernateProperties() {
Properties hibernateProperties = new Properties();
hibernateProperties.setProperty(
"hibernate.hbm2ddl.auto", "create-drop");
return hibernateProperties;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/413714.html
標籤:
下一篇:如何修復無法延遲初始化集合
