gpt4 book ai didi

java - 指定 Hibernate/JPA2.1 中嵌入式数据库的用户名、密码和连接 URL

转载 作者:行者123 更新时间:2023-12-01 10:51:18 25 4
gpt4 key购买 nike

我在 java 配置中定义了这个数据库,如下所示:

@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("classpath:/db/sql/create-db.sql")
.addScript("classpath:/db/sql/insert-data.sql")
.build();
}

我需要为此配置指定用户名和密码,但它们被硬编码在该构建器类的深处。如何指定我的自定义连接详细信息?

如果重要的话,我的完整类(class)如下所示:

@Configuration
public class DatabaseConfig {

@Resource
Environment environment;

@Bean
public NamedParameterJdbcTemplate jdbcTemplate(DataSource dataSource) {
return new NamedParameterJdbcTemplate(dataSource);
}

@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("classpath:/db/sql/create-db.sql")
.addScript("classpath:/db/sql/insert-data.sql")
.build();
}

@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
...
}

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) throws Exception {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();

LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
...
factory.setDataSource(dataSource);
...
return factory;
}

Properties jpaProperties() {
Properties props = new Properties();
...
return props;
}
}

我的主要配置文件如下:

@Configuration
@ComponentScan({"com.myapp.conf"})
@EnableAsync
@EnableScheduling
@EnableJpaRepositories(basePackageClasses = {CustomerRepository.class})
@EnableTransactionManagement
@PropertySources({
@PropertySource("classpath:app.properties")
})
public class ApplicationConfig {
...
}

最佳答案

您以嵌入模式运行数据库。当前 jvm 对数据库具有独占访问权限。无法在嵌入模式下提供登录。除非您在服务器模式下运行并且想要提供远程连接,否则您不需要提供凭据。

参见H2 connection modes详细解释。

关于java - 指定 Hibernate/JPA2.1 中嵌入式数据库的用户名、密码和连接 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33880233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com