3
道歉,如果這是一個轉發,我找不到搜索條件來查找類似的問題。Spring + Hibernate動態映射
我工作的應用程序支持可以在運行時加載或卸載的插件。有幾個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如何管理我的會話時,如何重新配置和擴充當前的映射配置「在飛行中」。
非常有趣的問題 – dfa 2009-05-24 18:48:38