java - 使用 Hibernate/JPA 设置密码运行时

标签 java hibernate jpa

我有一个 Web 应用程序,其数据库连接属性在 persistence.xml 中定义。

我正在使用包含管理器持久性以及使用 @PersistenceContext 注入(inject)的实体管理器。

现在数据库的密码位于 persistence.xml 文件中,但我宁愿在运行时设置它(询问用户)。

我可以使用密码运行时创建一个新的 EntityManager,但如何“覆盖”注入(inject)的实体管理器?

还有其他好的想法/方法吗?

最佳答案

是的,这有点担心为不同的环境配置配置文件。

虽然它不足以满足您的密码“运行时”设置并替换对象,但它将作为 spring bean 配置文件进行维护。

类似这样的东西;

@Configuration
@Profile("dev")
public class StandaloneDataConfig {

    @Bean
    public DataSource dataSource() {
        return new EmbeddedDatabaseBuilder()
            .setType(EmbeddedDatabaseType.HSQL)
            .addScript("classpath:com/bank/config/sql/schema.sql")
            .addScript("classpath:com/bank/config/sql/test-data.sql")
            .build();
    }

}

假设您想要加载生产配置文件?

您必须使用@Profile("product")定义另一个配置文件,并从类路径位置加载属性文件。

使用 Spring Boot,您可以将您的个人资料激活为

SPRING_PROFILES_ACTIVE=生产 mvn spring-boot:run

这可以让您在需要时更改密码并退回服务器。无论如何,当您更改密码时,连接需要重新启动。因此,理想情况下,这应该会使工作变得容易。

关于java - 使用 Hibernate/JPA 设置密码运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36173261/

相关文章:

java - 初始化 Spring 数据存储库时出现 NullPointerException

mysql - 外键 BIGSERIAL NULL Postgres

java - 使用java spring boot有什么问题

java - 使用 JPA 时如何将 Web 应用程序的数据库从 RDB 更改为 Hadoop?

java - 在 InputStream 中过滤(搜索和替换)字节数组

java - 当函数在 y 时间间隔内抛出异常时,重试函数调用 n 次

java - 使用 Hibernate 获取由 View 映射的抽象父类(super class)返回无效的列名

java - 将字段添加到表并重新生成后保留对 JPA 实体所做的自定义更改

java - OpenCV Java.多个图像并排

java - Apache Camel 文件组件 "idempotentRepository"选项与幂等消费者处理器?