Dynamisches Erzeugen von Instanzen

Madebuvie

Mitglied
Hallo zusammen,

ich hab mal eine Frage: Wenn ich eine Klasse für z.B. eine Adressdatei erstelle, dann
würde ich, in der Klasse die Bauanleitung für diese Klasse beschreiben (Vorname, Nachname,.. usw).

public class Adresse {...}

Im Programm erstelle ich dann die Objekte wie folgt:

Adresse maxMustermann = new Adresse("Max", "Mustermann");
Adresse peterLustig = new Adresse("Peter", "Lustig");
...

Ich würde gerne diese Adressen in einer Datenbank (welche ist erstmal noch egal) abspeichern und diese
auch wieder auslesen können. (Speichern, Lesen, Löschen, Ändern, Suchen, Adressliste laden usw.)

Frage 1: Bringe ich den Code für den Datenbankzugriff auch in der Klasse Adresse unter, oder wäre es
besser dafür eine neue Klasse zu erzeugen?

Frage 2: Am Ende habe ich vielleicht mehrere Hundert Adressen gespeichert. Findet das auslesen der
Adressliste auch in der Klasse Adresse statt (Da ich ja hier eigentlich mehrfache Instanzen des
Objektes habe)? Lese ich die Adressliste von der DB in ein Array rein?

Somit komme ich noch zur letzten Frage:

Frage 3: Bisher habe ich die Instanzen im Hauptprogramm immer in Variablen abgespeichert (maxMustermann, peterLustig). Wie wird dies bei beliebig vielen Instanzen gehandhabt?

Viele Grüße und Danke
MaDeBuVie
 
Hi Madebuvie,

ich gehe mal Schritt für Schritt deine Fragen durch:

1) Nein, das Model ("Adresse") beinhaltet lediglich die Attribute, die für die Adresse relevant sind, einen oder mehrere Contructors und die Getter, sowie Setter Methoden. Alles was mit der Datenbank zu tun hat wird normalerweise in einer seperaten Klasse gekapselt, z.B. AdressController.

2) Siehe 1, das kannst du in deinem Controller machen. In diesem kannst du dann deine lade-Methen so anlegen, dass die Daten wie benötigt zurückgegeben werden. Ob du da dann ein Array, eine Collection oder List zurückgibst bleibt dir überlassen.

3) Du holst dir die Adressen je nach Kriterium (findAdressById, findAdressesInTown....) von deinem Controller ab.

Wie du siehst liegt die komplette Logik in einem Controller gekapselt, den du je nach Bedarf ausbauen und erweitern kannst. In deinem Programm arbeitest du dann mit deinem Controller und holst dir von diesem die relevanten Daten. SQL-Abfragen haben in deiner Adress nichts verloren und sollten eigentlich auch nicht in deinem Controller stehen. Ich würde dir im Java-Umfeld vorallem Hibernate empfehlen (Google findet da super Tutorials dazu), der nimmt dir eine Menge Arbeit ab, ist schnell eingerichtet und vereinfacht vorallem deinen Code.

Grüße,
BK
 
Hi BK,

vielen Dank dafür. Wie gehe ich denn mit der Erstellung einer Adresse im Programm um? Ich kann doch nicht, wenn ich z.B. innnerhalb einer GUI mit einem Button arbeite für jede Adresse einen neuen Variablennamen erzeugen oder?

Adresse maxMustermann = new Adresse("Max", "Mustermann");
Adresse peterLustig = new Adresse("Peter", "Lustig");

Viele grüße
MaDeBuVie
 

Neue Beiträge

Zurück