java-Spring休眠动态映射

抱歉,如果这是转贴,我找不到找到类似问题的搜索词.

我正在研究的应用程序支持可以在运行时加载或卸载的插件.除了一些其他功能外,还有几个API挂钩可允许这些插件注册比开箱即用的对象更丰富的对象.激活插件并注册新的域对象后,我需要提醒休眠状态的新对象(以及停用插件时该对象的删除).我们所有的对象都用JPA / Hibernate注释标记.

系统类别

@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;

    ...
}

插件类(在JAR类加载器中找到)

@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管理会话时,如何在运行中重新配置和扩展当前的映射配置.

解决方法:

如果不需要保留以前的会话数据,则可以使用新的配置和新的类列表销毁/重新创建SessionFactory.在我看来,更改会话工厂中间应用程序的配置似乎不太可能,但是也许拥有更好Hibernate-Fu的人可以证明我错了.

上一篇:带有代码优先的EF 4.1中的TPH继承映射问题


下一篇:01 ORM框架概述