Ich habe ein Singleton, das in der Datenbank beibehalten werden soll. Andere persistente Entitäten sollten einen Verweis auf diesen Singleton haben. Wie kann es mit Hibernate erreicht werden?Ruhezustand/Persistenz und Singleton-Muster
ich mit etwas noch nicht arbeiten wie diese beendet, die einzelne ID des Singletons fälschen:
@Entity
@Subselect("select '1' as ID")
class Singleton {
@Id
@Column(name="ID")
private Long getId() { return 1l; }
private void setId(Long id) { }
}
@Entity
@Table(name="ENT")
class MyEnt {
// TODO: how to annotate so that table ENT doesn't need foreign key column
Singleton s;
}
Das Problem ist, dass ich Referenzierung nicht über eine Spalte mit Fremdschlüssel in Einheiten haben wollen der Singleton - weil der Singleton nur einer ist und wir seine ID nicht brauchen ...
Vielleicht denke ich falsch? Vielleicht ist es ein falsches Architekturproblem? Haben Sie ein ähnliches Problem gelöst?
Ja, aber was ist, wenn Sie den Container neu starten müssen oder Sie viele Container haben? Wie speichere ich den aktuellen Status des Singletons? Oder ändern Sie es in allen Containern? – ElderMael
Ich meinte, dass das Objekt in der Art und Weise gestaltet ist. Alles, was ich versuche, sage ich, dass ich keinen Grund sehe, dies in anderen Entitäten abzubilden. Laden Sie das Objekt einmal und bleiben Sie im App-Kontext. Wenn Sie den Container neu starten, laden Sie ihn erneut. –
1. Da sich die Daten in der Datenbank ändern können (webapp befindet sich auf mehreren Knoten) 2. weil die Entität den Singleton in ihren Geschäftslogikmethoden benötigt. Und ich möchte es nicht "manuell" darin einfügen. Es könnte vom DAO-Dienst für Entitäten ausgeführt werden, die von diesem DAO-Dienst geladen werden, aber was mit Entitäten zu tun ist, die indirekt geladen werden (von der ursprünglichen Entität referenziert)? – Jakub