Guten Tag liebe Community,
ich habe mal wieder eine Frage zur Struktur und wie ihr dieses aufbauen würdet.
Vorweg:
als GUI benutze ich Swing
zum persistieren benutze ich Hibernate (deswegen keine DAO Schicht, richtig?)
So sieht meine Struktur aus:
Ich bin gerade dabei, eine Datenbank für Filme zu bauen. Ich habe verschiedene Panel, diese sind zum Beispiel DVD und BluRay, welche in dem MainFrame untergebracht werden und mit einem jTabbedPane gewechselt werden können.
Diese enthalten verschiedene Bestandteile wie Informationen zum Einkauf (Preis, Artikelnummer etc.). Sie haben viele Gemeinsamkeiten in der Oberfläche, aber auch ein paar differenzen.
Meine Erste Überlegung war, eigene kleinere Panels machen, wie z.B. "BluRayEinkaufPanel" und "DVDEinkaufPanel", die beide von einer Superklasse "EinkaufPanel" erben und die verschiedenen Textfelder etc. hinzuzufügen. Oder sollte man die ganze Oberfläche in den Hauptpanel der BluRay machen und sich die Unterpanel sparen (Nachteil: Codeduplizierung)?
Ein Vorteil bei der zweiten Methode wäre, dass falls ich ein jTextField hinzufügen wollte, dieses frei anordnen kann und nicht nur anhängen kann.
Ein weiteres Problem ist das MVC-Modell. Ich habe die verschiedenen Views (meine Panels) welche Observer implementieren. Nun habe ich eine Suche in jedem Panel.
Ich brauche ja nun einen ActionListener auf dem Suchebutton, der die Daten an das Model weitergibt, ist also mein Controller dieser ActionListener?
Wie verfahre ich weiter? Der Controller ruft den Wert aus dem Model auf, oder sind die DAO direkt mein Modell? Ich müsste ja eine Anweisung haben wie "SELECT Titel FROM DVD WHERE ID =1" steht diese nun in meinem Model und kann mit einer Methode "getDVDbyID(int id)" aufgerufen werden, oder macht dieses der Controller oder das Model ist eigentlich nur ein Datenspeicher (wie meine DTO Klassen?)
Ist das Modell Observable oder der Controller? Ich denke mal das Modell. Wird jetzt setChanged und notifyObservers() aufgerufen, würdet ihr dann dort gleich alle Daten die in dem View erscheinen sollen als String Array übergeben, wird ihr eine DTO-Referenz mitgeben oder würdet ihr in dem View die Daten aus den Model bzw. den DTO Klassen ziehen lassen? (z.B. model.getTitel)
Ich hoffe ihr könnt mir weiterhelfen, ich finde immer nur eine MVC Beispiele ohne DTO Schichten.
Vielen dank im voraus!
ich habe mal wieder eine Frage zur Struktur und wie ihr dieses aufbauen würdet.
Vorweg:
als GUI benutze ich Swing
zum persistieren benutze ich Hibernate (deswegen keine DAO Schicht, richtig?)
So sieht meine Struktur aus:
Ich bin gerade dabei, eine Datenbank für Filme zu bauen. Ich habe verschiedene Panel, diese sind zum Beispiel DVD und BluRay, welche in dem MainFrame untergebracht werden und mit einem jTabbedPane gewechselt werden können.
Diese enthalten verschiedene Bestandteile wie Informationen zum Einkauf (Preis, Artikelnummer etc.). Sie haben viele Gemeinsamkeiten in der Oberfläche, aber auch ein paar differenzen.
Meine Erste Überlegung war, eigene kleinere Panels machen, wie z.B. "BluRayEinkaufPanel" und "DVDEinkaufPanel", die beide von einer Superklasse "EinkaufPanel" erben und die verschiedenen Textfelder etc. hinzuzufügen. Oder sollte man die ganze Oberfläche in den Hauptpanel der BluRay machen und sich die Unterpanel sparen (Nachteil: Codeduplizierung)?
Ein Vorteil bei der zweiten Methode wäre, dass falls ich ein jTextField hinzufügen wollte, dieses frei anordnen kann und nicht nur anhängen kann.
Ein weiteres Problem ist das MVC-Modell. Ich habe die verschiedenen Views (meine Panels) welche Observer implementieren. Nun habe ich eine Suche in jedem Panel.
Ich brauche ja nun einen ActionListener auf dem Suchebutton, der die Daten an das Model weitergibt, ist also mein Controller dieser ActionListener?
Wie verfahre ich weiter? Der Controller ruft den Wert aus dem Model auf, oder sind die DAO direkt mein Modell? Ich müsste ja eine Anweisung haben wie "SELECT Titel FROM DVD WHERE ID =1" steht diese nun in meinem Model und kann mit einer Methode "getDVDbyID(int id)" aufgerufen werden, oder macht dieses der Controller oder das Model ist eigentlich nur ein Datenspeicher (wie meine DTO Klassen?)
Ist das Modell Observable oder der Controller? Ich denke mal das Modell. Wird jetzt setChanged und notifyObservers() aufgerufen, würdet ihr dann dort gleich alle Daten die in dem View erscheinen sollen als String Array übergeben, wird ihr eine DTO-Referenz mitgeben oder würdet ihr in dem View die Daten aus den Model bzw. den DTO Klassen ziehen lassen? (z.B. model.getTitel)
Ich hoffe ihr könnt mir weiterhelfen, ich finde immer nur eine MVC Beispiele ohne DTO Schichten.
Vielen dank im voraus!