Es ist mal wieder soweit: Eine Guice Frage. 
Folgender Ausgangspunkt: Ich habe mein Domänenmodell zuerst mit Interfaces modelliert, danach die jeweilige Implementierung dafür gemacht. Das ganze ist für Guice über ein DomainModule zugänglich. Jetzt wollte ich Hibernate-Annotations in die Implementierungen klatschen, um die Objekte persistieren zu können. Und dabei, der geübte Guice-Nutzer ahnt es, quoll mein Log mit Fehlermeldungen über.
Da ich in den Implementierungen natürlich auch immer das Interface eines referenzierten Typs angegeben habe, kann Hibernate das natürlich nicht auf die gebundene Klasse aus Guice mappen.
Ich habe z.B. ein Interface SpielerEigenschaft, die als Attribut einen Spieler (auch ein Interface) und ein paar andere Sachen hat. Die Interfaces bindet Guice über das DomainModule an die richtigen Klassen und injected auch alles richtig. Aber z.B. die Persistence Annotation @OneToMany erwartet ja bei mappedBy und targetEntity eine konkrete Klasse bzw. ein Feld. Jetzt könnte ich in die Implementierungen der Domain-Interfaces natürlich durchaus die konkreten Klassen reinschreiben. Aber da fehlt mir irgendwie das DI Prinzip und ich verliere die lose Kopplung.
Helft mir mal bitte auf die Sprünge.
Ich könnte ja die AOP Features von Guice nutzen und vielleicht die Typen und Annotations für Hibernate beim Starten manipulieren, aber das wirkt wie mit Kanonen auf Spatzen. ^^
Folgender Ausgangspunkt: Ich habe mein Domänenmodell zuerst mit Interfaces modelliert, danach die jeweilige Implementierung dafür gemacht. Das ganze ist für Guice über ein DomainModule zugänglich. Jetzt wollte ich Hibernate-Annotations in die Implementierungen klatschen, um die Objekte persistieren zu können. Und dabei, der geübte Guice-Nutzer ahnt es, quoll mein Log mit Fehlermeldungen über.
Da ich in den Implementierungen natürlich auch immer das Interface eines referenzierten Typs angegeben habe, kann Hibernate das natürlich nicht auf die gebundene Klasse aus Guice mappen.
Ich habe z.B. ein Interface SpielerEigenschaft, die als Attribut einen Spieler (auch ein Interface) und ein paar andere Sachen hat. Die Interfaces bindet Guice über das DomainModule an die richtigen Klassen und injected auch alles richtig. Aber z.B. die Persistence Annotation @OneToMany erwartet ja bei mappedBy und targetEntity eine konkrete Klasse bzw. ein Feld. Jetzt könnte ich in die Implementierungen der Domain-Interfaces natürlich durchaus die konkreten Klassen reinschreiben. Aber da fehlt mir irgendwie das DI Prinzip und ich verliere die lose Kopplung.
Helft mir mal bitte auf die Sprünge.
Ich könnte ja die AOP Features von Guice nutzen und vielleicht die Typen und Annotations für Hibernate beim Starten manipulieren, aber das wirkt wie mit Kanonen auf Spatzen. ^^
Zuletzt bearbeitet: