Hi,
ich arbeite momentan an einem kleinen Kassensystem und ich habe Probleme bei der Speicherung meiner Objekte bzw. wo welches Object gespeichert werden soll. Ich hoffe, ich bin jetzt mit meiner Frage im richtigen Forum, da die Speicherung noch nicht festgelegt ist(sowohl eine datenbank als auch xml kommt in frage).
Also erstmal meine Ausgangssituation:
Ich habe eine Klasse Kunde und eine Klasse Transaktion, die in eine 1:n Beziehung haben. Mal paar Ausschnitte:
[HIGHLIGHT="Java"]public class Kunde {
private String name;
private int guthaben;
private ArrayList<Transaktion> transaktionen;
//restlicher code
}
[/HIGHLIGHT]
[HIGHLIGHT="Java"]public class Transaktion {
private TransaktionType type;
private Kunde kunde;
private int betrag;
//restlicher code
}
[/HIGHLIGHT]
Also habe ich eine Klasse Kunde mit Namen, seinem Guthaben(ist so ein 'Prepaidsystem') und seinen Transaktionen. In der Transaktion gibt eine Referenz auf den Kunden, den Typ(z.b. Guthaben einzahlen etc.) und dem Betrag(z.b. wie viel eingezahlt wird).
Die Transaktionen werden von einer anderen Klasse ausgeführt. Ich will das jetzt so machen, dass sobald eine Transaktion ausgeführt wird, sie auch gespeichert wird. Für die Speicherung habe ich mir Interfaces geschrieben(KundenDAO, TransaktionDAO), die mir CRUD Operationen bereit stellen.
Jetzt sieht die Ausführung einer Einzahlen Transaktion in etwa so aus:
[HIGHLIGHT="Java"]
Kunde kunde = transaktion.getKunde();
int betrag = transaktion.getBetrag();
int kundenGuthaben = kunde.getGuthaben();
kunde.setGuthaben(kundenGuthaben + betrag);
transaktion.setDone(true);
transaktion.setExecuteTime(new Date());
this.transaktionenDAO.save(transaktion); // hier die Speicherung
[/HIGHLIGHT]
Um jetzt zu meiner eigentlichen Frage zu kommen. Sollte die save Methode des TransaktionDAO auch den Kunden mitspeichern oder sollte ich noch einen Aufruf machen kundenDAO.save(kunde) ?
Wie würdet ihr es machen? bzw. wie würde es Hibernate machen, wenn ich sagen würde, dass er die Transaktion speichern soll?
Weiß jetzt nicht, wie ich das lösen soll. Einerseits ist das TransaktionDAO nicht für den Kunden zuständig, andererseits muss das TransaktionDAO beim laden einer Transaktion auch den Kunden mitladen, also wieso dann nicht auch mitspeichern?
Mfg
SebiB90
ich arbeite momentan an einem kleinen Kassensystem und ich habe Probleme bei der Speicherung meiner Objekte bzw. wo welches Object gespeichert werden soll. Ich hoffe, ich bin jetzt mit meiner Frage im richtigen Forum, da die Speicherung noch nicht festgelegt ist(sowohl eine datenbank als auch xml kommt in frage).
Also erstmal meine Ausgangssituation:
Ich habe eine Klasse Kunde und eine Klasse Transaktion, die in eine 1:n Beziehung haben. Mal paar Ausschnitte:
[HIGHLIGHT="Java"]public class Kunde {
private String name;
private int guthaben;
private ArrayList<Transaktion> transaktionen;
//restlicher code
}
[/HIGHLIGHT]
[HIGHLIGHT="Java"]public class Transaktion {
private TransaktionType type;
private Kunde kunde;
private int betrag;
//restlicher code
}
[/HIGHLIGHT]
Also habe ich eine Klasse Kunde mit Namen, seinem Guthaben(ist so ein 'Prepaidsystem') und seinen Transaktionen. In der Transaktion gibt eine Referenz auf den Kunden, den Typ(z.b. Guthaben einzahlen etc.) und dem Betrag(z.b. wie viel eingezahlt wird).
Die Transaktionen werden von einer anderen Klasse ausgeführt. Ich will das jetzt so machen, dass sobald eine Transaktion ausgeführt wird, sie auch gespeichert wird. Für die Speicherung habe ich mir Interfaces geschrieben(KundenDAO, TransaktionDAO), die mir CRUD Operationen bereit stellen.
Jetzt sieht die Ausführung einer Einzahlen Transaktion in etwa so aus:
[HIGHLIGHT="Java"]
Kunde kunde = transaktion.getKunde();
int betrag = transaktion.getBetrag();
int kundenGuthaben = kunde.getGuthaben();
kunde.setGuthaben(kundenGuthaben + betrag);
transaktion.setDone(true);
transaktion.setExecuteTime(new Date());
this.transaktionenDAO.save(transaktion); // hier die Speicherung
[/HIGHLIGHT]
Um jetzt zu meiner eigentlichen Frage zu kommen. Sollte die save Methode des TransaktionDAO auch den Kunden mitspeichern oder sollte ich noch einen Aufruf machen kundenDAO.save(kunde) ?
Wie würdet ihr es machen? bzw. wie würde es Hibernate machen, wenn ich sagen würde, dass er die Transaktion speichern soll?
Weiß jetzt nicht, wie ich das lösen soll. Einerseits ist das TransaktionDAO nicht für den Kunden zuständig, andererseits muss das TransaktionDAO beim laden einer Transaktion auch den Kunden mitladen, also wieso dann nicht auch mitspeichern?
Mfg
SebiB90
Zuletzt bearbeitet: