Java JPA-EclipseLink-如何在运行时配置数据库模式名称
我实现了一个使用Oracle数据库的Web应用程序(JEE6,EJB WebProfile)。我的问题是,我需要在不重新编译/重新打包应用程序的情况下更改使用的数据库模式(名称)。所以我想要的(这只是一个想法,也许有人有更好的想法),是在服务器中有一些配置(JNDI),它指定了模式名称。但是如何配置Eclipse链接以在运行时使用其他模式名称呢 详情: 目前,我使用Java JPA-EclipseLink-如何在运行时配置数据库模式名称,java,eclipse,oracle,jpa,glassfish,Java,Eclipse,Oracle,Jpa,Glassfish,我实现了一个使用Oracle数据库的Web应用程序(JEE6,EJB WebProfile)。我的问题是,我需要在不重新编译/重新打包应用程序的情况下更改使用的数据库模式(名称)。所以我想要的(这只是一个想法,也许有人有更好的想法),是在服务器中有一些配置(JNDI),它指定了模式名称。但是如何配置Eclipse链接以在运行时使用其他模式名称呢 详情: 目前,我使用orm.xml文件指定模式名称。但是应用程序使用三个不同的模式名称(一个用于开发,一个用于集成测试,一个用于生产),因此我需要编译和
orm.xml
文件指定模式名称。但是应用程序使用三个不同的模式名称(一个用于开发,一个用于集成测试,一个用于生产),因此我需要编译和打包(maven)应用程序三次
我有一个JEE6EJBWebProfile应用程序在Glassfish上运行,使用Oracle数据库,数据库连接由应用程序服务器处理,并通过JNDI提供给应用程序
是否有人知道如何在运行时配置数据库架构名称。配置JPA以使用数据源。然后,您可以为应用服务器中的应用程序配置不同的数据源
或者,您可以通过传递一组属性来创建EntitymanagerFactory:您可以使用EclipseLink
您可以创建一个脚本,为每个具有相同源代码但不同orm.xml的环境输出3个工件,这样您就不需要在运行时更改架构名称了。参考&可能会有所帮助。
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);
}
}