2009-05-24 17 views
3

謝罪これが再ポストである場合、私は類似の質問を見つけるために検索用語を見つけることができませんでした。Spring + Hibernate Dynamic Mapping

私が取り組んでいるアプリケーションは、実行時にロードまたはアンロードできるプラグインをサポートしています。これらのプラグインは、とりわけ、より豊かなオブジェクトを登録し、その後に提供されるオブジェクトを登録できるようにする、いくつかのAPIフックがあります。プラグインがアクティブになり、新しいドメインオブジェクトを登録するとき、私は新しいオブジェクト(そしてプラグインが非アクティブ化されたときにそのオブジェクトの削除)に休止状態を警告する必要があります。すべてのオブジェクトは、JPA/Hibernateアノテーションでマークアップされています。 (JARクラスローダに見られる)

システムクラス

@Entity 
@Inheritance(strategy=InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name="type", discriminatorType=DiscriminatorType.STRING) 
@DiscriminatorValue("CORE") 
public class User { 
    protected @Id @GeneratedValue int id; 
    protected String userName; 

    ... 
} 

プラグインクラス

@Entity 
@DiscriminatorValue("LDAP_USER") 
public class LdapUser extends User { 
    protected boolean active; 

    ... 
} 

プラグインエントリポイントAPIフック

public void activate() { 
    UserManager.getInstance().registerType(LdapUser.class); 
} 

public void deactivate() { 
    UserManager.getInstance().unregisterType(LdapUser.class); 
} 

私はhybernateがいくつかのAPIを使ってマッピングの設定をサポートしていることを知っていますが、アクティブなセッションがあるときにこれに深刻な影響が及ぶことも知っています。

私の質問は、Springがセッションを管理しているときに、「飛行中」の現在のマッピング設定をどのように再構成し、拡張することができるのかです。

+0

非常に興味深い質問 – dfa

答えて

3

以前のセッションデータを保持する必要がない場合は、新しいコンフィグレーションと新しいクラスリストでSessionFactoryを破棄/再作成できます。中途半端なセッションファクトリーの設定を変更するのは難しいかもしれませんが、Hibernate-Fuの方がうまくいけば、間違っているかもしれません。

関連する問題