2011-07-14 3 views
5

私は要件以下のいる新しいプロジェクトで、現時点で働いている:JPA/Hibernateのスイッチスキーマをプログラム

いくつかのデータベース・スキーマと同じ構造で同じテーブルを保持している(要するに:複数のスキーマに1つのエンティティ) 。

これらのスキーマをコードで切り替えることはできますか?私が達成したいのは:

ユーザはスキーマBを選択し、この中のいくつかのエンティティを更新します。この後、彼はスキーマAに挿入を行います。私は、ステートメントにスキーマを提供することによって基本的なJDBCによってこれを行うことができることを知っていますが、もし私がそれを避けることができれば。

他のJava ORMでこれを行うことはできますか?私はJPA/Hibernateだけに精通しています。

よろしく

答えて

2

あなたは、各スキーマに1つずつ別々のSessionFactory SまたはEntityManagerFactory Sを使用することができます。 ユーザースキーマAまたはBを選択したことを言ったので、あなたはこのようなものを使用することができます:それは実行しているとき、解決策はそれ以上の設定は必要ありません

public enum Schema { 
    A, B 
} 

public EntityDaoImpl { 

    // Create and populate the map at DAO creation time (Spring etc.). 
    private Map<Schema, SessionFactory> sessionFactoryBySchema = ...; 

    private Session getSession(Schema schema) { 
     SessionFactory sessionFactory = sessionFactoryBySchema.get(schema); 
     return sessionFactory.getCurrentSession(); // ... or whatever 
    } 

    public void saveEntity(Schema schema, Entity entity) { 
     getSession(schema).save(entity); 
    } 
} 
+0

を。申し訳ありませんが私の質問でそれを言及していません – onigunn

+0

詳細な設定で何を参照していますか? –

+0

この種のエンティティを持つ他のスキーマは、いつでもデータベースにインポートできます。私は動的に動作するものが必要です。メタデータで対応するスキーマを取得してそれらにアクセスする – onigunn

関連する問題