Input/Output Serialisierung oder Datenbank

geeek

Mitglied
Hallo zusammen!

Ich schreibe mir grade ein kleines To-Do Listen Programm und überlege grade wie ich am besten meine Aufgaben abspeichern kann.

Kurz etwas zur gedachten Struktur:

Projekt (1) ----->(n) Modul (1)---->(n) Aufgabe (1) ----(n) SubAufgabe

In den einzelnen Klassen habe ich mir ArrayListen angelegt, um die jeweiligen Sachen hinzuzufügen.

Projekt -> ArrayList<Modul>, Modul -> ArrayList<Aufgabe> usw.

Am besten wäre es imho jetzt Quasi zur Laufzeit eine Arraylist zu haben "Projekte"
die ich dann serialisiere und bei Programm Start wieder deserialisiere.

Also quasi alle Instanzen die ich habe einstampfen und dann bei Programm Start einfach wieder aufpumpen ?

Oder macht es hier Sinn eine Datenbank anzubinden? Ich könnte da auch bezüglich einer embedded Variante mal einen Anschubs gebrauchen (Link zu einem gutem Tutorial, oder einfach eine Meinung)🙂


Grüße Jan
 
Wenn du das Serialisierst musst du immer das komplette Objekt laden. Das heißt wenn du eine Liste aller Projekte ausgeben willst muss du zwingend auch alle Module, Aufgaben und SubAufgaben deserialisieren. Ich würd da ne embededded DB verwenden, bspw.
H2 Database Engine
 
Ich glaube auch, dass eine embedded DB die beste Lösung ist. Vor allem, weil das Schema, was du verwendest, ein relationales ist, sodass du kein O/R Mapping machen musst.
 
Eure Empfehlung also einfach per Standard SQL Query die jeweiligen Dinge in die Datenbank schubsen und gut ist?

Ja, so würde ich es machen. Du hast wahrscheinlich in jeder von dir genannten Klasse nur recht einfache Datentypen, bis auf die Referezen auf die untergeordneten Aufgabengruppen (ich meine damit Projekt --> Modul etc.). Die Datentypen String, int und boolean würde ich so übersetzten:
- String je nach erlaubter Textlänge entweder VARCHAR oder TEXT
- int nach INT
- boolean nach TINYINT oder BOOLEAN (ich bevorzuge TINYINT, vom Speicherbedarf kein Unterschied)
- Datumsangaben nach TIMESTAMP

Ich weiß nicht wie gut du dich mit SQL auskennst, aber du musst auf jeden Fall beachten, dass sich die Referenz umdreht. Es verweist in der DB nicht mehr das Elternelement auf das Kindelement, also Projekt --> Modul, sondern das Kindelement kennt sein Elternelement. So brauchst du nur ein Feld in der Modultabelle namens parent oder wie auch immer, in dem der Primärschlüssel vom Elternelement steht.
 
Danke nochmal an euch 🙂

Hab schon ein anderes Projekt mit einer Mysql Datenbank gemacht, denke
das ich es jetzt dann analog dazu machen werde.

Grüße
Jan
 

Zurück
Oben