Entschuldigung, wenn dies ein Repost ist, konnte ich die Suchbegriffe nicht finden, um eine ähnliche Frage zu finden.Spring + Hibernate Dynamic Mapping
Die Anwendung, an der ich arbeite, unterstützt Plugins, die zur Laufzeit geladen oder entladen werden können. Es gibt mehrere API-Hooks, die es diesen Plugins ermöglichen, unter anderem reichere Objekte zu registrieren, als solche, die im Lieferumfang enthalten sind. Wenn ein Plugin aktiviert wird und ein neues Domain-Objekt registriert, muss ich Hibernate auf das neue Objekt hinweisen (und das Entfernen des Objekts, wenn das Plugin deaktiviert ist). Alle unsere Objekte sind mit JPA/Hibernate-Annotationen markiert.
System-Klasse
@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;
...
}
Plugin-Klasse (in einer JAR-Klassenladeprogramm gefunden)
@Entity
@DiscriminatorValue("LDAP_USER")
public class LdapUser extends User {
protected boolean active;
...
}
Plugin Einspeisepunkt API hook
public void activate() {
UserManager.getInstance().registerType(LdapUser.class);
}
public void deactivate() {
UserManager.getInstance().unregisterType(LdapUser.class);
}
Ich weiß, dass hybernate die Konfiguration des Mappings über einige APIs unterstützt, aber ich weiß auch, dass dies ernsthafte Auswirkungen haben kann, wenn es aktive Sitzungen gibt.
Also meine Frage ist: Wie kann ich die aktuelle Mapping-Konfiguration 'in-Flight' rekonfigurieren und erweitern, wenn Spring meine Sitzungen verwaltet.
sehr interessante Frage – dfa