5

Oracle DB を使用する Web アプリケーション (JEE6、EJB WebProfile) を実装しています。私の問題は、アプリケーションを再コンパイル/再パッケージせずに、使用されているデータベース スキーマ (名前) を変更する必要があることです。したがって、私が望むのは (これは単なるアイデアであり、誰かがより良いアイデアを持っている可能性があります)、スキーマ名を特定する構成 (JNDI) をサーバー内に持つことです。しかし、実行時に別のスキーマ名を使用するように Eclipse Link を構成するにはどうすればよいでしょうか。

詳細:

現時点では、orm.xmlファイルを使用してスキーマ名を指定しています。しかし、アプリケーションは 3 つの異なるスキーマ名 (開発用、統合テスト用、本番用) を使用するため、アプリケーションを 3 回コンパイルしてパッケージ化 (maven) する必要があります。

Oracle DBを使用してGlassfishで実行されているJEE6 EJB WebProfileアプリケーションがあり、データベース接続はアプリケーションサーバーによって処理され、JNDI経由でアプリケーションに提供されます。

実行時にデータベーススキーマ名を構成する方法を知っている人はいますか?

4

2 に答える 2

8

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);
  } 
}
于 2012-05-10T12:29:17.733 に答える
1

データソースを使用するように JPA を構成します。次に、アプリ サーバー内のアプリケーション用にさまざまなデータソースを構成できます。

または、一連のプロパティを渡すことで EntitymanagerFactory を作成できます: http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManagerFactory.html#createEntityManager%28java.util.Map%29

于 2012-05-10T12:25:16.080 に答える