Hi,
ich hab ein paar Fragen zur Entwicklung von Software in Java (wobei die Fragen generell für jede objektorientierte Programmiersprache gelten).
1. Wir haben in Software-Engineering gelernt, dass, wenn man wissen muss, welche Objekte eine Klasse hat, eine "List"-Klasse braucht, die eine Liste über alle Objekte führt, die erstellt werden. Klingt für mich logisch. Die Frage ist aber: Wenn wir z.B. eine Bibliotheks-Software programmieren und dort User (Personen, die Bücher ausleihen) anlegen und parallel in der Datenbank speichern. Nun fahren wir das Programm am abend runter. Kein Problem, die User sind ja in der Datenbank permanent gespeichert. Am nächsten morgen starten wir das Programm wieder. Die User sind noch da (in der Datenbank), aber nicht mehr als Objekt in der Anwendung. Wie passt das zusammen? Also soll ich jetzt alle User aus der Datenbank beim Start des Programms auslesen und als Objekte speichern, obwohl ich sie vielleicht bis zum Shutdown garnie brauche? Und wenn nicht, wozu brauch ich dann eine Liste, wenn sie eh keine Übersicht über alle Objekte darstellt (und ich eigentlich besser die db auslesen sollte).
2. Generell weiß ich nicht, wie das bei OBjekten läuft, wenn Fehler auftreten (Exceptions). Kleines Beispiel: Ich erschaffe ein neues User-Objekt und die Datenbank ist aus irgendeinem Grund nicht erreichbar. Die SQL-Anfrage liefert also eine Exception. Natürlich läuft das Programm trotzdem weiter. Es liefert eine Fehlermeldung und bricht nicht komplett ab. Gibt es nun das Objekt? Wenn ja, ist dass dann ein inkonsistenter Zustand? Wie verhindere ich diesen?
3. Dies ist eine Frage speziell für Java: Ist es theoretisch besser, eine Verbindung zur db pro Programm herzustellen oder pro SQL-Abfrage eine Verbindung aufzubauen und wieder zu schließen? Im ersten Fall habe ich keine Ahnung, wie ich das anstelle. Den zweiten Fall praktiziere ich gerade, aber bin mir nicht sicher, ob das so gut ist.
So, das waren die drei Fragen, die mir aktuell den ein oder anderen Gedanken bereiten.
Danke schonmal für alle Antworten,
PlaciD
ich hab ein paar Fragen zur Entwicklung von Software in Java (wobei die Fragen generell für jede objektorientierte Programmiersprache gelten).
1. Wir haben in Software-Engineering gelernt, dass, wenn man wissen muss, welche Objekte eine Klasse hat, eine "List"-Klasse braucht, die eine Liste über alle Objekte führt, die erstellt werden. Klingt für mich logisch. Die Frage ist aber: Wenn wir z.B. eine Bibliotheks-Software programmieren und dort User (Personen, die Bücher ausleihen) anlegen und parallel in der Datenbank speichern. Nun fahren wir das Programm am abend runter. Kein Problem, die User sind ja in der Datenbank permanent gespeichert. Am nächsten morgen starten wir das Programm wieder. Die User sind noch da (in der Datenbank), aber nicht mehr als Objekt in der Anwendung. Wie passt das zusammen? Also soll ich jetzt alle User aus der Datenbank beim Start des Programms auslesen und als Objekte speichern, obwohl ich sie vielleicht bis zum Shutdown garnie brauche? Und wenn nicht, wozu brauch ich dann eine Liste, wenn sie eh keine Übersicht über alle Objekte darstellt (und ich eigentlich besser die db auslesen sollte).
2. Generell weiß ich nicht, wie das bei OBjekten läuft, wenn Fehler auftreten (Exceptions). Kleines Beispiel: Ich erschaffe ein neues User-Objekt und die Datenbank ist aus irgendeinem Grund nicht erreichbar. Die SQL-Anfrage liefert also eine Exception. Natürlich läuft das Programm trotzdem weiter. Es liefert eine Fehlermeldung und bricht nicht komplett ab. Gibt es nun das Objekt? Wenn ja, ist dass dann ein inkonsistenter Zustand? Wie verhindere ich diesen?
3. Dies ist eine Frage speziell für Java: Ist es theoretisch besser, eine Verbindung zur db pro Programm herzustellen oder pro SQL-Abfrage eine Verbindung aufzubauen und wieder zu schließen? Im ersten Fall habe ich keine Ahnung, wie ich das anstelle. Den zweiten Fall praktiziere ich gerade, aber bin mir nicht sicher, ob das so gut ist.
So, das waren die drei Fragen, die mir aktuell den ein oder anderen Gedanken bereiten.
Danke schonmal für alle Antworten,
PlaciD