F
fktest
Gast
Hallo,
ich stehe im Moment vor folgendem Problem (vielleicht auch einfach nur vorm Berg):
Ich habe einige Klassen welche jeweils eine Zeile in einer Tabelle einer Datenbank darstellen (ich benutze hibernate, aber das tut eigentlich nichts zur sache).
Jede dieser Klassen hat einen Haufen Felder und die dazugehörigen get/set Methoden, nicht weiter besonders.
Nun zu meinem eigentlich Problem:
Ich würde gerne eine Method findAll() implementieren, welche mir alle Instanzen der gesuchten Klasse aus der Datenbank zurückliefert.
Ich stelle mir das ganze so vor:
Um das zu erreichen, und nicht in jeder Klasse einzeln findAll() zu implementieren müsste ich ja eine (abstrakte) Superklasse für all meine "Daten-Klassen" erstellen, und in dieser eine statische Methode findAll() vorgebe.
Das geht aber nicht, da ja eine statische Methode an der Klasse "klebt" in der sie definiert wurde und nicht vererbt werden kann. Was ich bräuchte wären im Prinzip "echte" Klassenmethoden, die an ihrer Laufzeitklasse hängen. Sowas gibt es aber in Java soweit ich weiß nicht.
Natürlich würde es funktionieren wenn findAll() nicht statisch wäre, aber dann bräuchte ich ja schon immer eine Instanz der Klasse, die ich ja eigentlich erst suchen will, was ja irgendwie unlogisch ist.
Ein mögliches Work-Around wäre natürlich eine statische "Manager" Klasse, ähnlich wie das hier:
Ich fände obigen Ansatz aber schöner, logischer und intuitiver.
Ich sage der Klasse Person: gib mir all deine Instanzen!
Hat jemand eine Idee wie das möglich wäre, ohne findAll() in jeder Subklasse neu zu implementieren?
Das muss doch möglich sein mit Java!
Ich hoffe ihr versteht was ich meine und freue mich über jede Idee!
Gruß,
Jonas
ich stehe im Moment vor folgendem Problem (vielleicht auch einfach nur vorm Berg):
Ich habe einige Klassen welche jeweils eine Zeile in einer Tabelle einer Datenbank darstellen (ich benutze hibernate, aber das tut eigentlich nichts zur sache).
Jede dieser Klassen hat einen Haufen Felder und die dazugehörigen get/set Methoden, nicht weiter besonders.
Nun zu meinem eigentlich Problem:
Ich würde gerne eine Method findAll() implementieren, welche mir alle Instanzen der gesuchten Klasse aus der Datenbank zurückliefert.
Ich stelle mir das ganze so vor:
Code:
Person.findAll() // => liefert alle Personen aus der Datenbank
Adresse.findAll() // => liefert alle Adressen aus der Datenbank
Das geht aber nicht, da ja eine statische Methode an der Klasse "klebt" in der sie definiert wurde und nicht vererbt werden kann. Was ich bräuchte wären im Prinzip "echte" Klassenmethoden, die an ihrer Laufzeitklasse hängen. Sowas gibt es aber in Java soweit ich weiß nicht.
Natürlich würde es funktionieren wenn findAll() nicht statisch wäre, aber dann bräuchte ich ja schon immer eine Instanz der Klasse, die ich ja eigentlich erst suchen will, was ja irgendwie unlogisch ist.
Ein mögliches Work-Around wäre natürlich eine statische "Manager" Klasse, ähnlich wie das hier:
Code:
public class Manager {
// Record ist die Superklasse für alle "Daten-Objekte"
public static <T extends Record> T[] findAll(Class type) {
T[] result;
// suche alle Objekte vom Typ type in der Datenbank und speicher sie in result
return result;
}
}
Ich fände obigen Ansatz aber schöner, logischer und intuitiver.
Ich sage der Klasse Person: gib mir all deine Instanzen!
Hat jemand eine Idee wie das möglich wäre, ohne findAll() in jeder Subklasse neu zu implementieren?
Das muss doch möglich sein mit Java!
Ich hoffe ihr versteht was ich meine und freue mich über jede Idee!
Gruß,
Jonas