Java Coding-Problem: statisches Erben (?)
2009-08-27 11:39
7wingera
Hallo! Aus dem Titel wird keiner schlau, fürchte ich - ich weiß einfach nicht, wie ich mein Problem kurz umschreiben kann… Also:
Ich arbeite grade an einer Anwendung, bei der mittels Hibernate und HSQLDB recht viele Klassen persistiert werden. Das funktioniert auch alles ganz gut, aber mir geht es ziemlich auf den Senkel, für jede zu persistierende Klasse Methoden für
- das Laden,
- das Speichern
- das Löschen
- …
eine Methode schreiben zu müssen, da es im Prinzip bei jeder Klasse immer das gleiche ist.
Also dachte ich mir, ich mach ne abstrakte Klasse, die oben genannte (statische) Methoden implementiert und von der alle zu persistierenden Klassen dann erben.
Mal am Beispiel der Methode zum Laden eines Landes nach dem String-Identifier:
So funktioniert es:
und man kann es in die Superklasse einbauen, sodass es funktioniert: s. Anhang. (Sry, aber wenn ich den Code-Schnipsel hier einfügen will, krieg ich ne Fehlermeldung beim Posten xD )
Nun stellt sich aber ein Problem: Ich muss angeben, von welcher Klasse eine Instanz geladen werden soll - dazu das statische Feld someClass. Das Feld someClass will ich in jeder erbenden Klasse anders vergeben, also in Country dann "someClass = Country.class" - das funktioniert nur nicht.
Ohnehin scheint mir der Ansatz irgendwie um die Ecke gedacht, aber ich komm auf keine einfachere Lösung. (Im Grunde komm ich nich mal auf irgend eine funktionierende Lösung, bei der die Methoden komplett vererbt werden…)
Hat jemand ne Idee?
Danke!
Wolle
Ich arbeite grade an einer Anwendung, bei der mittels Hibernate und HSQLDB recht viele Klassen persistiert werden. Das funktioniert auch alles ganz gut, aber mir geht es ziemlich auf den Senkel, für jede zu persistierende Klasse Methoden für
- das Laden,
- das Speichern
- das Löschen
- …
eine Methode schreiben zu müssen, da es im Prinzip bei jeder Klasse immer das gleiche ist.
Also dachte ich mir, ich mach ne abstrakte Klasse, die oben genannte (statische) Methoden implementiert und von der alle zu persistierenden Klassen dann erben.
Mal am Beispiel der Methode zum Laden eines Landes nach dem String-Identifier:
So funktioniert es:
public static Country getByIdentifier(String id)
{
Country instance = null;
Session s = ConnectionManager.getOfflineSession();
s.beginTransaction();
try
{
instance = (Country) s.get(Country.class, id);
s.getTransaction().commit();
}
catch (Exception e)
{
s.getTransaction().rollback();
ConnectionManager.getNewSession();
}
return instance;
}
und man kann es in die Superklasse einbauen, sodass es funktioniert: s. Anhang. (Sry, aber wenn ich den Code-Schnipsel hier einfügen will, krieg ich ne Fehlermeldung beim Posten xD )
Nun stellt sich aber ein Problem: Ich muss angeben, von welcher Klasse eine Instanz geladen werden soll - dazu das statische Feld someClass. Das Feld someClass will ich in jeder erbenden Klasse anders vergeben, also in Country dann "someClass = Country.class" - das funktioniert nur nicht.
Ohnehin scheint mir der Ansatz irgendwie um die Ecke gedacht, aber ich komm auf keine einfachere Lösung. (Im Grunde komm ich nich mal auf irgend eine funktionierende Lösung, bei der die Methoden komplett vererbt werden…)
Hat jemand ne Idee?
Danke!
Wolle