gpt4 book ai didi

java - 在运行时将数据库信息传递给 Hibernate?

转载 作者:行者123 更新时间:2023-12-02 06:15:30 25 4
gpt4 key购买 nike

hibernate 的问题是,您需要将数据库信息(用户名/密码等)放入 xml 文件中。但是,如果您在 Amazon Web 服务(例如 Beanstalk)上部署应用程序,您将获得通过 System.getProperty("RDS_DATABASE_USER") 传入的数据库信息。等等。优点是,如果创建了更多应用程序实例,则会自动传递数据库信息,而无需手动编辑配置文件。

有没有办法在运行时将数据库信息传递给 hibernate 状态?如果没有,是否有另一个好的 java ORM 库,您可以在运行时将此信息传递给它?我正在使用 MySQL。

最佳答案

事实上,方法PersistenceUtil.createEntityManagerFactory允许您提供属性图。使用此映射,您可以动态提供用户名和密码。

如何执行此操作很可能取决于您使用的特定框架。

根据您问题中的标签,不清楚您是否使用 Hibernate 还是 OpenJPA。

Open JPA 文档 Obtaining an EntityManagerFactory 部分提供您可以使用的属性列表。

Map<String,String> properties = new HashMap<>();
properties.put("openjpa.ConnectionUserName", "userName");
properties.put("openjpa.ConnectionPassword", "password");
EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyPersistenceUnit",properties);

Hibernate 支持一组类似的属性。很可能您已经将它们包含在 persistence.xml 文件中。

一些依赖注入(inject)框架(例如 Spring)甚至不需要 persistence.xml 文件,并且可以从其他地方(例如环境变量)动态读取此类属性。

关于java - 在运行时将数据库信息传递给 Hibernate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21518583/

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