Wo bring ich die datenbankanfragen unter?

Status
Nicht offen für weitere Antworten.

MontyBurns

Mitglied
hi

ich arbeite mich gerade in swing ein und frag mich wie ich am geschicktesten die datenbankanfragen unterbringe
wollte keine Jframe-klasse schreiben in der das gui gebaut wird, und auch die datenbankabfragen drin stehen

dachte mir das man das ganze vlt im model der jeweiligen komonete unterbringen kann
hab aber leider noch niergendwo ne "richtlinie" gefunden wie man das am geschicktesten anstellt ....

vlt hat ja jmd nen tipp für mich

würd mich freun

MontyBurns
 

outbreaker

Bekanntes Mitglied
Hallo

Eigentlich werden in der OO Programmierung Klassen in Control Boundary und Control getrennt
Boundary ist deine GUI
Control ist deine Datenbank abfrage
Entity sind deine Datenhaltungsklassen

Du solltest dir also auf jedenfall eine eigene Klasse für das Abfragen der Datenbankinformationen anlegen und das nicht mit in die GUI hauen. Das würde das ganze auch sehr unübersichtlich machen

Robustheitsanalyse
 

mimo

Aktives Mitglied
Ich denke so pauschal lässt sich das nicht festlegen. das kommt darauf an wie komplex deine Abfragen sind. Und wie deine Views aufgebaut sind. Du kannst natürlich die Tabellen 1:1 aus der Datenbank Darstellen lassen, aber wie sieht es aus wenn deine Metadaten von den der Tabelle im View abweichen solln?
 

MontyBurns

Mitglied
hm...
was ich mich hald frage, ob ich jetzt eine klasse baue mit der eine relation ausgelesen wird un dann die einzelenen tupel in einer schleife in z.b. das defaultListModel einfüge, oder ob man vlt das DefaultListModel erweitert, und das ganze direkt darin implementiert

auf meiner suche nach einer antwort hab ich viele swing-tutorials gesehen, aber leider keins das mir zeigen konnte wie so eine anwendung gebaut/strukturiert wird, also wo welche funktionalität rein kommt ....

mich würd mal eine kleine swing anwendung sehen die man als vorbild nehmen kann wie sowas strukturiert wird

MontyBurns
 

outbreaker

Bekanntes Mitglied
Ich mache das so:


Control

Klasse fragt die Daten bei der Datenbank ab und schreibt Sie in ein ListModel (für die Abfrage übergibst du der Klasse z. B. dein aktuelles Model oder lässt dir eines zurück geben)

Entity

ListModel Klasse welche die Daten für deine Table enthält
-> wird von der Control Klasse befüllt

Boundary

GUI Klasse welche die Liste enthält
diese Klasse stößt das abrufen der Daten dann über die Control Klasse an


Hilft dir das weiter oder verstehe ich deine Frage falsch?
 

MontyBurns

Mitglied
ja
glaub das war ein ganz guter denkanstoss

aber gibt es keine texte die sich damit beschäftigen wie man sowas aufbaut?
sonst darf man sich nciht wundern das alle alles in eine klasse stecken ...

danke (freu mich noch über andere anregungen)

MontyBurns
 

outbreaker

Bekanntes Mitglied
Das ist nicht java spezifisch einfach mal allgemein nach Objektorientierte Programmierung gucken bzw auch UML
ich werde mal zu Hause in meine Studiumsunterlagen gucken ob ich da ein paar gute Hinweise bzw Literatur finde

Schreibe ich dir dann
 

MontyBurns

Mitglied
ich glaube ich kenn mich objektorientierung recht gut aus
hab aber bis jetzt nie swing sachen programmiert und weiss nicht was da die übliche vorgehensweise ist solche strukturprobleme zu lösen
ich glaub was mich verwirrt ist, das überall geschrieben wird man soll darstellung von der logik und der datenhaltung trennen, aber nirgens konkret gezeigt wird wie das normalerweise umgesetzt wird
 
G

Gast2

Gast
Such mal nach Design Pattern/Entwurfsmuster die zeigen dir wie du mit Strukruprobleme und noch mehr umgehen kannst...
 

MontyBurns

Mitglied
Design Pattern/Entwurfsmustet sind mir ein begriff
und ich hab das MVC-pattern glaub ich halbwegs verstanden
nur weiss ich nciht wie ich das am ende umsetzen soll

mir würde glaub ich schon ein grobes uml-diagramm nützen

MontyBurns
 
G

Gast2

Gast
Code:
public class GUI extends JFrame implements ActionListener{
	
	private JTextField txtID;
	public GUI()
	{
		super("Kleines Beispiel");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setLayout(new GridLayout(1,2));
		getContentPane().add(new JLabel("ID"));
		txtID=new JTextField(20);
		txtID.addActionListener(this);
		getContentPane().add(txtID);
		
		pack();
		setVisible(true);
	}

	public void actionPerformed(ActionEvent arg0) {
		Cd cd =new Cd(txtID.getText());
		Datenbank.insertCd(cd):
		
	}
	
	public static void main(String[] args) {
		new GUI();
	}

}

Code:
public class Cd {

	private String id;
	
	public Cd(String id)
	{
		this.id=id;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}
}

Code:
public class Datenbank....
...
...
...

so oder sowas ähnliches

www.libra.de/target/javaArticleMVC;jsessionid=73F42D04E6D23F58C2BFB1B1267CC9BD#pattern
 
S

smjergol

Gast
Code:
public class Cd {

	private String id;
	
	public Cd(String id)
	{
		this.id=id;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}
}

Code:
public class Datenbank....
...
...
...

so oder sowas ähnliches

www.libra.de/target/javaArticleMVC;jsessionid=73F42D04E6D23F58C2BFB1B1267CC9BD#pattern[/quote]

Hm... Die CDs sind ja die Datenbank bzw. werden darin sicherlich gespeichert, daher würde ich die Methoden um die CD zu adden, löschen , auslesen etc... auch in dieser Datenbank Klasse unterbringen.
 

byte

Top Contributor
outbreaker hat gesagt.:
Eigentlich werden in der OO Programmierung Klassen in Control Boundary und Control getrennt
Boundary ist deine GUI
Control ist deine Datenbank abfrage
Entity sind deine Datenhaltungsklassen
Boundary = GUI? Hab ich noch nie gehört. ???:L

Die klassische Vorgehensweise ist eigentlich Trennung von GUI und Logik durch MVC, wobei die DB-Anfragen als zusätzliche Schicht über DAOs passiert (Data Access Objects).
 

outbreaker

Bekanntes Mitglied
byto hat gesagt.:
outbreaker hat gesagt.:
Eigentlich werden in der OO Programmierung Klassen in Control Boundary und Control getrennt
Boundary ist deine GUI
Control ist deine Datenbank abfrage
Entity sind deine Datenhaltungsklassen
Boundary = GUI? Hab ich noch nie gehört. ???:L

Die klassische Vorgehensweise ist eigentlich Trennung von GUI und Logik durch MVC, wobei die DB-Anfragen als zusätzliche Schicht über DAOs passiert (Data Access Objects).

So habe nochmal nachgelesen ob ich mich irre aber habe das gefunden:

...Boundary ist englisch und steht für Grenze. Boundary-Klassen grenzen die Software von der Umgebung ab. Boundary-Klassen sind das Interface der Software.

Kein Akteur (siehe Tutorial1 "Use-Case-Diagramme") kann mit einem System kommunizieren, ohne eine Boundary-Klasse zu nutzen.

Jeder Weg in oder aus der Software muss über eine Boundary-Klasse führen. Alle Formulare und GUI Elemente sind Boundary-Klassen. Ebenso wie Schnittstellen zu Datenbanken, Importschnittstellen oder Schnittstellen zu anderer Software. ...
Quelle


oder

• Boundary-Klassen stehen an der Grenze des betrachteten Software-
Systems. Sie bedienen den Benutzer oder nehmen von ihm Aufträge
entgegen. In Web-Applikationen liefern die Boundary-Klassen beispielsweise
eine Webseite oder ein Eingabeformular aus. Sie nehmen auch Eingaben des
Benutzers entgegen, bereiten sie auf und leiten sie an die Control-Objekte
weiter.
• Auf Konzept-Ebene (Analyse) sollen Boundary-Klassen vorallem aufzeigen,
was man dem Benutzer auf dem GUI (beispielsweise im Browser)
präsentieren will.
Quelle Seite 85


und bei wikipedia stehts auch so

...
 

outbreaker

Bekanntes Mitglied
laut dem einen was ich gefunden habe gehören deine Datenbankabfragen dann wohl doch eher zu Boundary als zu Control
hätte vom Gefühl her gedacht, dass es eher Control ist

EDIT

und MVB ist doch eigentlich genau das selbe oder sehe ich das falsch

Model = Entity
Control = Control
View = Boundary

oder ???:L
 

byte

Top Contributor
Deine Links beziehen sich alle auf UML und Use Cases. Scheint also eher ein akademisches Thema zu sein.

Ich bilde mir ein, einen Großteil der Entwurfsmuster zu kennen. Dort suchst Du diese Begriffe vergeblich. Und Pattern liegen nun mal näher an der Realität der Softwareentwicklung als visuelle Modellierung.

Ich empfehle Dir mal, die Bibel zu lesen. ;)
 

outbreaker

Bekanntes Mitglied
Ja die beziehen sich auf UML davon bin ich ja bei meiner Aussage auch ausgegangen :wink:
und die Kernaussage von Trennung "Control / Daten / Anzeige" ist wohl von uns beiden gleich

Mir wurde das halt mit den Begriffen Boundary Control Entity gelehrt aber das kann man sicher auch Model / View / Control nennen der Kern bleibt der selbe

Wir hatten im Studium unter anderem mit diesem Buch gearbeitet
 
M

maki

Gast
MVC ist kein Pattern, sondern "nur" ein Konzept, bzw. eine "high level architecture".

Links zu Seiten die MVC für Webanwednungen beschreiben sind bei Fragen zu Swing/AWT ziemlich nutzlos, da sich die Konzepte und vor allem die Implementierungen sehr unterscheiden.

Ansonsten wäre es gut wenn man zumindest ähnliche Beriffe verwendet, da man sich sonst gegenseitig nicht vesteht, "boundary" halte ich persönlich für weniger gut, da zu allgemein.
 

outbreaker

Bekanntes Mitglied
boundary ist allgemeiner als View das sehe ich ein
aber ich glaube das was es zu verstehen gab wurde von MontyBurns verstanden meiner Meinung nach
Also das er es nicht alles in eine Klasse hauen sollte :wink:
 

byte

Top Contributor
outbreaker hat gesagt.:
Mir wurde das halt mit den Begriffen Boundary Control Entity gelehrt aber das kann man sicher auch Model / View / Control nennen der Kern bleibt der selbe
Man sollte halt eine Sprache sprechen, damit andere verstehen was man meint. Mit Boundary kann imo in der Softwareentwicklung niemand was anfangen, MVC kennt hingegen jeder.
Nicht immer entspricht das, was man im Studium lernt, auch der angewandten Praxis. ;) Sehr viel ist akademisch oder fernab dessen, was zur Best Practice in der Industrie zählt. Das liegt daran, dass viele Mitarbeiter an der Uni nie oder nur sehr kurz in der Industrie entwickelt haben.
 
G

Gast2

Gast
Hm... Die CDs sind ja die Datenbank bzw. werden darin sicherlich gespeichert, daher würde ich die Methoden um die CD zu adden, löschen , auslesen etc... auch in dieser Datenbank Klasse unterbringen.

nichts anderes hab ich gemacht
 

outbreaker

Bekanntes Mitglied
byto hat gesagt.:
outbreaker hat gesagt.:
Mir wurde das halt mit den Begriffen Boundary Control Entity gelehrt aber das kann man sicher auch Model / View / Control nennen der Kern bleibt der selbe
Man sollte halt eine Sprache sprechen, damit andere verstehen was man meint. Mit Boundary kann imo in der Softwareentwicklung niemand was anfangen, MVC kennt hingegen jeder.
Nicht immer entspricht das, was man im Studium lernt, auch der angewandten Praxis. ;) Sehr viel ist akademisch oder fernab dessen, was zur Best Practice in der Industrie zählt. Das liegt daran, dass viele Mitarbeiter an der Uni nie oder nur sehr kurz in der Industrie entwickelt haben.

Mit ein und der selben Sprach sprechen bin ich ganz deiner Meinung.
Aber das mit Bondary und Co keiner was anfangen kann würde ich mal bezweifeln aber gut.
Wir hatten einen externen Dozenten und bei ihm wird das auch so praktiziert in der Firma. :wink:
aber OK das kann schon sein das der Großteil mehr mit MVC anfangen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K GridBagLayout bring mich um den Verstand AWT, Swing, JavaFX & SWT 6
MiMa JavaFX JAR unter Windows ausführen schlägt fehl? AWT, Swing, JavaFX & SWT 5
CodingBerlin JavaFX Programm läuft nur unter Eclipse AWT, Swing, JavaFX & SWT 1
S Ich bringe Code mit JavaFX unter Apache NetBeans IDE 12.6 nicht zum laufen. AWT, Swing, JavaFX & SWT 14
U Wie funktioniert das rotieren unter 2dGraphics, also wie stelle ich z. B. 90° ein? AWT, Swing, JavaFX & SWT 1
T Swing DPI-Skalierung und Java 2D unter Java 11 (und Windows 10) AWT, Swing, JavaFX & SWT 2
N JavaFX Installation unter IntelliJ IDEA AWT, Swing, JavaFX & SWT 5
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
B JavaFX openjfx11: intelliJ unter Ubuntu 18.10 kann nicht auflösen AWT, Swing, JavaFX & SWT 4
CptK Swing Button: ImageIcon unter den Text AWT, Swing, JavaFX & SWT 4
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
A Swing Gemaltes Bild über saveDialog speichern unter AWT, Swing, JavaFX & SWT 15
S Kein JFrame unter Mac? AWT, Swing, JavaFX & SWT 8
Blender3D Swing KeyBoardListener funktioniert nicht unter UBUNTU AWT, Swing, JavaFX & SWT 7
V Swing Button soll unter anderem Button sein AWT, Swing, JavaFX & SWT 2
L DoubleBuffering unter Swing AWT, Swing, JavaFX & SWT 0
L JavaFX Scene wechseln unter FX AWT, Swing, JavaFX & SWT 5
Avarion Swing JFrame unter Windows 10 kleiner ?! AWT, Swing, JavaFX & SWT 2
T ThreadPool sicher beenden unter Verwendung von swt.widgets.Display.syncExec AWT, Swing, JavaFX & SWT 1
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
M Swing Bildbearbeitung unter Java AWT, Swing, JavaFX & SWT 22
S (Swing)Vollbild anzeigen unter Linux/Mac AWT, Swing, JavaFX & SWT 6
D 2D-Grafik Rechteck befindet sich unter dem Rahmen des JFrame. AWT, Swing, JavaFX & SWT 1
T JFrame Icon unter Linux/Ubuntu AWT, Swing, JavaFX & SWT 11
S JMenu unter JPanel versteckt AWT, Swing, JavaFX & SWT 5
P Verbuggte custom JButton unter Windows AWT, Swing, JavaFX & SWT 9
SexyPenny90 JLabel liegt unter meiner Turtle AWT, Swing, JavaFX & SWT 5
F LayoutManager Null-Layout unter Linux im TreeCellEditor AWT, Swing, JavaFX & SWT 3
J AWT setBackground(Color.orange) ist unter Win7 Aero nicht orange AWT, Swing, JavaFX & SWT 3
T Unter JPanel liegende Komponenten "totschalten" AWT, Swing, JavaFX & SWT 5
R Problem mit TrayIcon unter Windows/Linux AWT, Swing, JavaFX & SWT 7
M Datei Speichern unter Dialog - SWT AWT, Swing, JavaFX & SWT 3
T JButtons indexiert unter NetBeans anlegen AWT, Swing, JavaFX & SWT 7
S GUI aussehen unter Windows und Linux (und Mac) AWT, Swing, JavaFX & SWT 13
J Applet Kommunikation unter Applets AWT, Swing, JavaFX & SWT 2
I Probleme mit GWT Controls unter Firefox AWT, Swing, JavaFX & SWT 14
A Swing Probleme unter Windows 7 AWT, Swing, JavaFX & SWT 5
F AWT MouseMotionListener e.getButton() ist immer 0 unter Linux und Windows AWT, Swing, JavaFX & SWT 6
F AWT DnD von Dateien mit Sonderzeichen funktioniert unter Linux nicht AWT, Swing, JavaFX & SWT 3
J Swing Natives Menü unter OS X erstellen ? AWT, Swing, JavaFX & SWT 8
C Swing Kleines Programm mit SWING unter Verwendung von MVC AWT, Swing, JavaFX & SWT 5
G SWT-App läuft nicht unter OSX, unter Win aber problemlos AWT, Swing, JavaFX & SWT 3
H Y-Position mit get-/setLocation() unter Linux/Enlightement16 inkonsistent AWT, Swing, JavaFX & SWT 3
G SWT Linie unter transparentes Canvas zeichnen AWT, Swing, JavaFX & SWT 4
M KeyListener Problem unter Firefox AWT, Swing, JavaFX & SWT 2
G Quaqua unter Windows AWT, Swing, JavaFX & SWT 15
B LaF unter KDE AWT, Swing, JavaFX & SWT 2
SuperSeppel13 Swing Fehlende Komponenten unter Mac OS X AWT, Swing, JavaFX & SWT 8
M Swing GroupLayout unter Java 1.5 AWT, Swing, JavaFX & SWT 20
M JMenu teilweise unter einer JComponent AWT, Swing, JavaFX & SWT 4
B Button identifizieren unter MouseEvent AWT, Swing, JavaFX & SWT 7
L JPanel mit Objekten selektieren wie unter Windows / Ubuntu AWT, Swing, JavaFX & SWT 4
W WindowsLookAndFeel unter Mac AWT, Swing, JavaFX & SWT 5
A Swing LAF unter Windows: javax.swing.DebugGraphics cannot be cast to java.awt.Graphics2D AWT, Swing, JavaFX & SWT 5
N JDesktop unter Linux AWT, Swing, JavaFX & SWT 4
C JComboBox funktioniert nicht unter Mac OS X AWT, Swing, JavaFX & SWT 2
P Swing [gelöst/erledigt] Gleicher Code läuft unterschiedlich unter Linux und Windows AWT, Swing, JavaFX & SWT 5
U Grafikkontext unter JButtons? AWT, Swing, JavaFX & SWT 5
M Probleme unter Linux AWT, Swing, JavaFX & SWT 7
E Hat Netbeans unter Linux kein Designer für Swing? AWT, Swing, JavaFX & SWT 3
D Probleme mit Java Swing unter Mac OSX AWT, Swing, JavaFX & SWT 13
F Statuszeile unter Swing AWT, Swing, JavaFX & SWT 4
P Programm terminiert nicht (unter Eclipse) AWT, Swing, JavaFX & SWT 5
V Swing: System-Look&Feel unter KDE AWT, Swing, JavaFX & SWT 3
L Problem mit "setVisible" unter LINUX AWT, Swing, JavaFX & SWT 5
gieser jToggleButton: Text unter Bild AWT, Swing, JavaFX & SWT 2
G SWT Button mit Image und ohne Rand unter Linux? AWT, Swing, JavaFX & SWT 7
G Problene mt Focus unter Swing AWT, Swing, JavaFX & SWT 7
D AWT drawString funktioniert nicht unter Linux AWT, Swing, JavaFX & SWT 7
lolkind unter JPanel eine JTable auf voller Größe anzeigen lassen? AWT, Swing, JavaFX & SWT 6
G AnfängerSWING Frage Werkzeugleiste unter dem Menu AWT, Swing, JavaFX & SWT 3
Noar IllegalComponentStateException unter Gnu/Linux AWT, Swing, JavaFX & SWT 2
T % von Komponenten unter Layoutmanager AWT, Swing, JavaFX & SWT 2
S JTable: Zeile unter MouseCursor farblich hervorheben AWT, Swing, JavaFX & SWT 2
Firefork JPopupMenu unter einem Schalter darstellen AWT, Swing, JavaFX & SWT 2
D Programm läuft unter XP aber nicht unter Knoppix AWT, Swing, JavaFX & SWT 6
ARadauer jtable drucken unter java 1.3 AWT, Swing, JavaFX & SWT 2
T Pobleme beim Druck unter Java AWT, Swing, JavaFX & SWT 2
M Keine Buttons oder sonstige Objekte in JFrame unter Linux AWT, Swing, JavaFX & SWT 4
J JSlider regaiert unter Java 1.6 nicht mehr AWT, Swing, JavaFX & SWT 7
R Drucken unter jdk 1.4 mit JTable AWT, Swing, JavaFX & SWT 11
C Thread - Beendigung unter Swing abwarten AWT, Swing, JavaFX & SWT 6
T JGoodies unter Windows 98 AWT, Swing, JavaFX & SWT 4
Z Wie kann ich Text unter den Textfeldern einfügen? AWT, Swing, JavaFX & SWT 3
F AWT Programm unter Linux anders als unter Windows ! AWT, Swing, JavaFX & SWT 8
M JDialog unter win und linux unterschiedliche größe nötig? AWT, Swing, JavaFX & SWT 4
F Schriftarten unter Windows und Linux AWT, Swing, JavaFX & SWT 6
M [SOLVED]komponenten unter einem JTabbedPane AWT, Swing, JavaFX & SWT 2
S AWT unter Gnome AWT, Swing, JavaFX & SWT 2
T Tray-Icon-Menü unter Linux AWT, Swing, JavaFX & SWT 10
J JFrame Icon unter Linux AWT, Swing, JavaFX & SWT 2
M .txt unter Verwendung von JSpinner in Textfeld schreiben AWT, Swing, JavaFX & SWT 4
H AbsoluteLayout nicht nur unter Netbeans AWT, Swing, JavaFX & SWT 5
B Graues Feld unter JComboBox AWT, Swing, JavaFX & SWT 2
I Drag and Drop funktioniert unter Linux nicht AWT, Swing, JavaFX & SWT 6
H removen unter SWT AWT, Swing, JavaFX & SWT 4
G Buttonschriftart unter SWT AWT, Swing, JavaFX & SWT 2
K g.DrawImage unter paintComponent klappt nur beim 1. Aufruf AWT, Swing, JavaFX & SWT 3
V Wie kann man SWT-TabItems unter Pocket PC oben anzeigen? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben