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

JPA-EclipseLink-如何在运行时配置数据库架构名称

邢财
2023-03-14
问题内容

我实现了一个使用Oracle DB的Web应用程序(JEE6,EJB
WebProfile)。我的问题是,我需要更改使用的数据库架构(名称),而无需重新编译/重新打包应用程序。因此,我想要的(这只是一个主意,也许有人有更好的主意),是在服务器内进行一些配置(JNDI),具体说明架构名称。但是,如何配置Eclipse
Link在运行时使用其他模式名称?

细节:

目前,我使用该orm.xml文件指定架构名称。但是应用程序使用三种不同的模式名称(一种用于开发,一种用于集成测试,一种用于生产),因此我需要对应用程序进行3次编译和打包(Maven)。

我有一个使用Oracle DB在Glassfish上运行的JEE6 EJB
WebProfile应用程序,并且数据库连接由应用程序服务器处理,并通过JNDI提供给应用程序。

有谁知道如何在运行时配置数据库模式名称。


问题答案:

您可以使用EclipseLink
SessionCustomizer。

package some.java.package;

import org.eclipse.persistence.config.SessionCustomizer; 
import org.eclipse.persistence.sessions.Session; 
import org.eclipse.persistence.sessions.DatabaseLogin;

public class MySessionCustomizer implements SessionCustomizer {

  private String schema = "some_schema";
  public MySessionCustomizer() {
      schema = ... // read from property, jndi, etc.
  }

  public void customize(Session session) { 
      session.getLogin().setTableQualifier(schema);
  } 
}


 类似资料:
  • 问题内容: 我有一个问题,我只能使用一个数据库,但我有多个服务器,希望它们为每个服务器使用不同的表名。 现在,我的班级配置为: 我希望能够使dev1服务器指向loader_queue_dev1表,例如dev2服务器指向loader_queue_dev2表。 有没有可以使用注释或不使用注释的方法? 我希望能够拥有一个单一的构建,然后在运行时使用诸如系统属性之类的东西来更改该表名。 问题答案: 对于H

  • 问题内容: 我发现在hibernate配置文件中,我们可以设置参数: 现在,我正在使用JPA,我也想这样做。否则,我必须将参数添加到每个@Table注释中,例如: 据我了解,此参数应该在配置的这一部分中: …但是我在Google中找不到它的名字。有任何想法吗? 问题答案: 也不知道为此的JPA属性。但是,您可以仅将Hibernate属性(假设您使用Hibernate作为提供程序)添加为 hiber

  • 问题内容: 我正在使用weblogic和oracle对Web应用程序进行编程。数据源是通过JNDI配置的,具有受限制的数据库用户,该用户可以DML到表中,但不能DDL。您可能会猜到,该用户不是这些表的所有者,但已授予该用户访问权限。 假设他是GUEST_USER 该应用程序正在使用JPA + EclipseLink,并且已经定义了许多实体。我不想在每个实体类中都写入要更改架构的属性。我已经尝试过使

  • 在我的Spring Boot应用程序中,我使用Spring data jpa。在实体中,我需要从配置中选择架构名称,架构将发生变化,并且需要可配置。我试过下面的但不管用 模式。名称在应用程序中定义。属性文件 我收到“无法提取结果集”错误 有没有办法做到这一点? ===================编辑===============

  • 我使用Spring初始值设定项创建了一个新的Spring Boot项目。我正在构建一个内部部署后端,所以我试图实现的是,当用户打开jar可执行文件并启动服务器时,他应该能够通过在他的web浏览器中转到localhost:8080/来配置数据库连接。基本上是索引。html将有一个包含IP地址、数据库名称、用户名和密码4个字段的表单。提交表单后,spring将尝试使用提供的信息连接到数据库。 我拥有所

  • 如何正确配置Wildfly8.x JTA数据源,以便在EclipseLink和Microsoft的SQLServer数据库中使用JPA?