当前位置: 首页 > 面试题库 >

动态更改持久性单元-JPA

闻人飞白
2023-03-14
问题内容

构建应用程序时会创建persistence.xml中的持久性单元。由于我想在运行时更改数据库URL,是否有任何方法可以在运行时修改持久性单元?我应该使用其他数据库,而不是在分发后预先绑定一个数据库。

我正在使用EclipseLink(JPA 2.1)


问题答案:

保持持久性单元文件(Persistence.xml)不变。您可以按如下所示覆盖其中的属性。

EntityManagerFactory managerFactory = null;
Map<String, String> persistenceMap = new HashMap<String, String>();

persistenceMap.put("javax.persistence.jdbc.url", "<url>");
persistenceMap.put("javax.persistence.jdbc.user", "<username>");
persistenceMap.put("javax.persistence.jdbc.password", "<password>");
persistenceMap.put("javax.persistence.jdbc.driver", "<driver>");

managerFactory = Persistence.createEntityManagerFactory("<current persistence unit>", persistenceMap);
manager = managerFactory.createEntityManager();


 类似资料:
  • 我正在编写一个独立的java应用程序,从Maven项目构建它并通过调用jar文件执行。 在应用程序中,我有一个实体管理器,它使用在我的持久性中定义的持久性单元。xml是独立的(事务类型=“RESOURCE\u LOCAL”) 实际的实体注释类来自另一个项目,因此被添加到pom中。xml文件作为依赖项。 问题是持久性。包含实体类的项目的xml覆盖了实际独立应用程序的持久性。构建jar时,jar目标文

  • 问题内容: 我收到以下错误: 这是我的persistence.xml文件: 这是我的persistenceLayer.xml: persistence.xml位于src / META-INF中,该文件位于构建路径中,因此应正确找到它。谁有想法? 问题答案: 好吧,我通常将persistence.xml放在资源文件夹/src/main/resouces/META- INF/persistence.x

  • 我正在开发Hibernate JPA持久性Web应用程序,我的persistence.xml在src/main/Resources/META-INF/persistence.xml(在war文件中,它在WEB-INF/class/META-INF中)。这一切在本地Tomcat服务器上运行良好,但当放在Openshift JBoss EWS上时,在启动时收到此消息: 坚持不懈xml以 并且有两个持久

  • 有没有办法将quarkus security jpa与多个持久性单元一起使用?JpaIdentityProvider似乎直接注入了实体管理器工厂,这导致了“javax.persistence.EntityManagerFactory类型的不满意依赖”的异常。 可能有解决办法吗? 有什么建议吗? 谢谢文森特

  • 其实相对于VIP的切换,动态修改持久化则是比较常见的一个需求,一般在一主多从多Sentinel的HA环境中,为了性能常常在Master上关闭持久化,而在Slave上开启持久化,但是如果发生切换就必须有人工干预才能实现这个功能。可以利用client-reconfig-script自动化该进程,无需人工守护,我们就以RDB的动态控制为例: Sentinel配置文件如下: sentinel client

  • 问题内容: 我想构建一个表格,该表格可以根据其他组件的状态动态更改可见的组件。 例如,…有一些文本框和一些复选框,并且如果用户激活了某个复选框,则应该出现一堆其他输入元素。 我可以使用JSF 2.0 + Tomahawk来做到这一点吗,还是必须让另一个库来做到这一点?我该怎么办呢?没有AJAX,这将无法工作,对吗? 提前致谢! 问题答案: Ajax是实现此目的的便捷方法,而JSF 2.0捆绑了aj