繁体   English   中英

Spring + Hibernate动态映射

[英]Spring + Hibernate Dynamic Mapping

如果这是重新发布的道歉,我找不到搜索词来找到类似的问题。

我工作的应用程序支持可以在运行时加载或卸载的插件。 有几个API挂钩允许这些插件,除其他外,注册更丰富的对象,然后开箱即用。 当一个插件被激活并注册一个新的域对象时,我需要提醒hibernate到新对象(并在插件被停用时删除该对象)。 我们所有的对象都标有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。 改变会话工厂mid-app的配置似乎不太可能,但也许有更好的Hibernate-Fu的人可能会证明我错了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM