Daten persistent speichern

JMarkus

Mitglied
Hallo,
ich stehe mal wieder vor einer Frage und hoffe ihr könnt mir helfen. ???:L

Angenommen ich möchte eine Anwendung zur Fahrzeugverwaltung erstellen. Dann habe ich eine Vielzahl von bspw. Auto-Objekten. Diese Auto-Objekte haben Daten wie z. B. Hersteller, Modell, Kennzeichen, Farbe, usw.

Nun möchte ich diese "Daten" natürlich dauerhaft abspeichern. Hierbei stellt sich schon mal die Frage ob man nur die reinen Daten (also "Opel" -> "Astra"...) oder das gesamte Auto-Objekt abspeichern muss. Eine weitere Frage wäre, welches Mittel (serielle Datei, XML-Datei, (embedded) DB) man dazu verwenden sollte bzw. was heute best practise ist.

Ich bin auf eure Beiträge gespannt ;)
 

Tassimmo

Mitglied
Hallo,

also das Objekt an sich kannst du nicht abspeichern. Du wirst die reinen Daten nehmen müssen, sie irgendwo abspeichern, und beim erneuten Laden ins Programm wieder als Objekt darstellen müssen, da Java-Objekte nur zur Laufzeit "existieren".

Zum Testen deiner Anwendung kannst du zunächst deine Rohdaten als Textdatei abspeichern. Wenn die Anwendung irgendwann mal größer wird und auch richtig verwendet wird, würde ich dir eine Datenbank empfehlen, auf die du dann mit JPA (zum Beispiel auch mit Hibernate Framework) zugreifst.
 
Zuletzt bearbeitet:

javanick

Mitglied
Hallo,

zum Abspeichern von "gesamten" Objekten gibt es das Interface Serializable.
Dazu auch im (englischen) Wikipedia-Artikel: Serialization
Hier ein einfaches Tutorial dazu und hier das zugehörige Kapitel in "Java ist auch eine Insel"

Die ganzen Objekte werden nicht serialisiert, sondern "nur" die Attribute, die nicht als statisch und nicht als transient markiert sind.

Wenn Du allerdings riesige Datenmengen hast, würde ich wie Tassimmo eine Datenbank verwenden.
 
Zuletzt bearbeitet:

JMarkus

Mitglied
Danke für eure Antworten. Dass also nur die Daten der Objekte gespeichert werden habe ich jetzt kapiert ;)

Bei der anzuwendenden Speichertechnik bin ich mir allerdings noch nicht sicher was ich nehmen soll. Die von javanick beschriebene Serialisierung ist ja nur eine Möglichkeit. Diese hat jedoch auch ihre Nachteile wie z. B. ein proprietäres Format, Probleme bei der Deserialisierung wenn Strukturänderungen am Programm vorgenommen wurden, usw.

Mir schwebt da schon eher die Variante einer HSQLDB vor mit Zugriff über bspw. JPA (wie von Tassimmo angerissen). Da ich allerdings nicht tausende von Datensätzen habe scheint mir der Aufwand hierfür etwas hoch. Gibt es nicht noch weitere, einfache und gut unterstützte Möglichkeiten?
 
Zuletzt bearbeitet:

Thallius

Top Contributor
Wenn du nur ein paar Einträge hast würde ich es als XML speichern. Aber wenn Du Dich einmal in z.B. sqlite eingearbeitet hast, dann geht es deutlich schneller dieses zu benutzen als erstmal eine XML Schnittstelle zu definieren und das Datenformat zu erzeugen etc. Ich würde immer eine DB nehmen da man ja auch gar nicht weiß ob das Programm nicht doch mal größer wird und dann muss man eh auf eine DB umbauen. Und wie gesagt. Wenn man es kann (Und etwas zu können ist ja eigentlich nie verkehrt) dann dauert es nicht länger eine DB zu implementieren als etwas anderes zu machen.

Gruß

Claus
 

JMarkus

Mitglied
Ich würde immer eine DB nehmen
Genau das schwebte mir auch vor. Zu der Frage welche DB man nehmen kann, gibt es hier einen interessanten Artikel
Eingebettete Datenbanken | iX

Nun stellt sich nur noch die Frage, wie man das Problem der objektrelationalen Abbildung am besten löst. Ist JPA da die einzige Möglichkeit? Bestimmt nicht oder...?! Wie bekomme ich also am besten (und einfachsten) die Objekte in eine relationale DB? :confused:
 

Thallius

Top Contributor
Also wenn es dein erstes DB Projekt ist, dann würde ich gar nicht mit irgendeinem Framework arbeiten sondern es einmal selber machen. So lernst du was eine Normalisierung ist, wie man DB Tabellen richtig aufbaut und man intelligente Queries macht.

Sprich du erstellst Dir für jede Klasse einen Konstruktor der dein Objecte aus einem Datensatz erzeugt und eine Methode die das Object in die DB schreibt bzw updated.

Gruß

Claus
 

Tassimmo

Mitglied
Das wäre tatsächlich auch das, was ich vorgeschlagen hätte.
Du kannst von Anfang an JPA verwenden, es ist, einmal verstanden, sehr einfach anzuwenden und zu adaptieren. Allerdings verwendest du dabei für den eigentlichen Datenbankzugriff bereits vorgegebene Methoden, musst deine eigenen SQL-Befehle schreiben und deinen Zugriff sowie deine Anbindung selbst aufbauen. Es ist wichtig zu verstehen, wie so ein DB-Zugriff an sich funktioniert, damit du auch reagieren kann, wenn mal irgendwas schief läuft.

Im Hintergrund verwendet JPA eigentlich auch nichts anderes als JDBC, nur siehst du davon dann weniger.
 

JMarkus

Mitglied
Kennt jemand ein gutes Tutorial für JPA oder kann jemand Beispielcode posten für das oben angefangene Beispiel "Fahrzeugverwaltung" (Auto-Objekte)? Ich kann JPA irgendwie noch nicht so recht einordnen bzw. abgrenzen von z. B. Hibernate, EclipseLink. Brauche ich solch ein Framework oder geht es auch mit Java-Boardmitteln (z. B. JPA)? Und wie??
 

BRoll

Bekanntes Mitglied
Wie wäre es noch mit einer objektorientierten Datenbank wie zb. db4o?
Dann spart man sich doch einiges an Konvertierung und es passt besser, da Java auch OOP ist!
 

Thallius

Top Contributor
HM ich sage ich würde es selber machen und Du sagst "Will ich auch" und dann kommst du doch mit JPA.

Wo ist denn jetzt das Problem ein Object in eine DB zu schreiben? Dafür brauche ich doch kein JPA sondern ein paar Codezeilen.

Gruß

Claus
 

JMarkus

Mitglied
Meine Antwort bezog sich auch mehr auf den Post von Tassimmo und "Will ich auch" habe ich nie geschrieben!
Sicher kann man auch alles selber coden, danach wegwerfen und JPA lernen aber den Aufwand wollte ich mir halt sparen und lieber gleich "richtig" loslegen.
Und natürlich ist es ein Problem Objekte aus der objektorientierten Welt in eine relationale DB zu schreiben. Es ist sogar ein sehr bekanntes Problem: Object-relational impedance mismatch :lol:
 

Thallius

Top Contributor
Das ist ja super theoretisiert. Also ein Objekt das ein Auto beschreibt in einer DB abzubilden ist kinderkram und habe ich in der Form zigfach gemacht. Und dafür braucht kein Mensch JPA.

Aber ich bin halt einfach zu oldschool hier in dem Thread. Mach wie du willst
 

JMarkus

Mitglied
Das mit dem Auto-Objekt war ein vereinfachtes BEISPIEL um die Problematik möglichst kurz und verständlich zu beschreiben. Natürlich steht da schon eine größere Anwendung hinter, sodass es durchaus Sinn macht sich mit JPA o. ä. zu beschäftigen.

Aber was will mir einer von der Praxis erzählen, der die Theorie schon nicht verstanden hat?? :noe:

Vielleicht hat ja noch jemand eine Antwort auf die ursprüngliche Frage in Kommentar 11. Der Tipp mit db4o ist im Übrigen auch nicht schlecht. Werd ich mir mal genauer anschauen.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Desktop-Applikation schreiben, wie daten persistent? Allgemeine Java-Themen 9
I Mehrere Klassen mit den selben Daten Allgemeine Java-Themen 5
padde479 Collections Daten in Dreiecksform Allgemeine Java-Themen 13
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
A Hartgecodete Daten auslagern Allgemeine Java-Themen 4
F Laden von bestimmten Daten aus TAR Archiv Allgemeine Java-Themen 23
S Webservices für binäre Daten? Allgemeine Java-Themen 5
OnDemand Daten in RAM zwischenspeichern oder lieber aus DB holen? Allgemeine Java-Themen 24
J Daten über serielle Schnittstelle empfangen Allgemeine Java-Themen 4
J JSON Daten von einer Webseite erhalten Allgemeine Java-Themen 2
S Entities aus XML - Daten. Allgemeine Java-Themen 1
M Schnelleres Speichern von XML-Daten über URLConnection Allgemeine Java-Themen 4
kodela Klasse mit "gezipten" Daten Allgemeine Java-Themen 6
M Daten aus MatLab Datei lesen Allgemeine Java-Themen 8
N Daten einer JCoTable in JTextArea anzeigen Allgemeine Java-Themen 7
kodela Klassen Klasse "vergisst" ihre Daten Allgemeine Java-Themen 2
C Daten für Klassifikationsverfahren gewinnen Allgemeine Java-Themen 6
J Daten von Quelltext Allgemeine Java-Themen 5
K OOP Daten addieren sich bei GUI-Eingabe Allgemeine Java-Themen 10
J Jasper Reports - Daten vom Hoster Allgemeine Java-Themen 2
kodela Daten während Laufzeit zugriffsbereit Allgemeine Java-Themen 15
J Millisekunde zwischen 2 Daten Allgemeine Java-Themen 6
Q Selbständig ActionEvent auslösen zum Daten senden über serielle Schnittstelle Allgemeine Java-Themen 7
J Daten aus Website-Quelltext auslesen Allgemeine Java-Themen 62
R Android Daten online senden Allgemeine Java-Themen 0
P Datenbank-MiniGUI fügt keine Daten ein Allgemeine Java-Themen 4
K Gespeicherte Daten von einer LinkedList auf vier LinkedList verteilen Allgemeine Java-Themen 6
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
A Erste Schritte Daten aus einer Website auslesen Allgemeine Java-Themen 7
S Erste Schritte Fehlender Gedanken-Ansatz bei Interpretation von Daten Allgemeine Java-Themen 1
J Auslesen Daten Java/HTML Allgemeine Java-Themen 15
K Große Mengen an Daten speichern Allgemeine Java-Themen 9
D Daten in MySQL-Datenbank schreiben Allgemeine Java-Themen 13
A Swing FileWriter schreibt keine Daten in Datei Allgemeine Java-Themen 13
M Daten aus anderen Programmen auslesen Allgemeine Java-Themen 2
D Best Practice Login-Daten: Wie am besten abrufen? Allgemeine Java-Themen 6
L Best Practice Log Dateien analysieren und eventuell passende Daten am Chart darstellen Allgemeine Java-Themen 1
J Serial Port Daten empfangen Allgemeine Java-Themen 5
H Daten via COM Schnittstelle erhalten Allgemeine Java-Themen 2
S Allgemeine parallelisierte Loesung um Daten im Hintergrund zu laden..? Allgemeine Java-Themen 6
L Daten ohne Datenbank richtig abspeichern Allgemeine Java-Themen 5
G Daten aus Website auslesen Allgemeine Java-Themen 7
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
O Serial Port Daten als Tastaturanschlag senden Allgemeine Java-Themen 0
N Zeitabstand zwischen 2 Daten(Mehrzahl von Datum) Allgemeine Java-Themen 3
T Input/Output Daten in eine Datei schreiben Allgemeine Java-Themen 4
Z daten bindung Allgemeine Java-Themen 1
A Datentypen Gregorian Calendar - 2 Daten sind gleich?? Allgemeine Java-Themen 3
L Vergleich-Xml-Daten Allgemeine Java-Themen 3
vandread Daten verschlüsseln mit Java oder Datenbank Allgemeine Java-Themen 15
A Daten in Formularen/Vorlagen erstellen und ausdrucken Allgemeine Java-Themen 3
C HtmlUnit Daten einer Tabelle bekommen ohne, dass diese eine ID aufweist Allgemeine Java-Themen 1
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
Todesbote Excel Blattschutz aufheben und Daten einfügen Allgemeine Java-Themen 3
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
OnDemand PC identifizieren / Daten auslesen Allgemeine Java-Themen 15
G Combobox füllen mit daten aus einer Tabelle Allgemeine Java-Themen 4
J Maven .war enthält veraltete Daten Allgemeine Java-Themen 3
N Daten aus Jar laden Allgemeine Java-Themen 10
P Datentypen String-Daten zu Byte-Zahlen konvertieren - Komme nicht weiter nach vielem versuchen :-/ Allgemeine Java-Themen 7
K Input/Output Daten speichern / laden Allgemeine Java-Themen 2
M Best Practice: Daten aufnehmen-speichern-bereitstellen Allgemeine Java-Themen 8
T Daten effizient verwalten Allgemeine Java-Themen 4
B JTable eigene Daten Add Methode Allgemeine Java-Themen 2
S OOP Apache Commons Math - Verwendung von Genetics - Wie werden Daten in Chromosomen gespeichert? Allgemeine Java-Themen 4
C Daten über URL an PHP verschicken Allgemeine Java-Themen 4
R Daten aus DB auslesen in ein formular (JSP) Allgemeine Java-Themen 13
S Library fuer Internet-Text-Daten-Quellen..? Allgemeine Java-Themen 8
H OOP Daten über TCP Allgemeine Java-Themen 5
H Input/Output Binäre Daten konvertieren, Output hat Zeilenumbrüche?? Allgemeine Java-Themen 9
D Daten eines User auslesen. Allgemeine Java-Themen 5
B Input/Output Einbinden von Daten in Java Allgemeine Java-Themen 3
L Einbinden von Daten in ausführbare Jar Allgemeine Java-Themen 6
N Methoden Einzelne Daten aus "Person" auslesen Allgemeine Java-Themen 3
R SerialPort auslesen und Daten verarbeiten Allgemeine Java-Themen 23
ARadauer Wo liegen die Daten der Preferences Klasse Allgemeine Java-Themen 3
Madlip Erste Schritte Java speichert Daten im Programm?!? Allgemeine Java-Themen 9
S JDialog Daten ins JFrame übergeben Allgemeine Java-Themen 5
F Threads synchronisierung des Zugriffes auf daten Allgemeine Java-Themen 4
O Amazon S3 Anmelden / Daten downloaden Allgemeine Java-Themen 2
A Daten aufbereiten Allgemeine Java-Themen 11
P Daten kopieren mit nio - Zugriff verweigert Allgemeine Java-Themen 8
L Speichern von Daten in JKS Allgemeine Java-Themen 5
K JFreeCharts - Dummy für fehlende Daten Allgemeine Java-Themen 6
M Daten aus doc, pdf .... auslesen Allgemeine Java-Themen 12
Z Daten von einer Klasse in eine andere übertragen Allgemeine Java-Themen 8
A Login-Daten Formular automatisch ausfüllen Allgemeine Java-Themen 10
C Daten speichern und verwalten Allgemeine Java-Themen 3
Z Daten aus einer Internetseite auslesen? Allgemeine Java-Themen 2
E BlueJ Daten in Textdatei schreiben Allgemeine Java-Themen 21
T Gleichzeitige Zugriffe auf Daten auf dem Server Allgemeine Java-Themen 11
ruutaiokwu META-INF-daten bei ungepackten library-projekten während der entwicklung mit einbeziehen...? Allgemeine Java-Themen 2
K Server Daten Visualisieren Allgemeine Java-Themen 3
F HashMap überschreibt Daten von anderen HashMap Allgemeine Java-Themen 5
A Java Projekt (Daten Eingeben, Speichern und in Listen Ausgeben) Allgemeine Java-Themen 6
L Sicherstellen das 2x die gleichen Daten unter bestimmten Keys enthalten sind. Allgemeine Java-Themen 6
A XML-Daten komprimieren Allgemeine Java-Themen 6
W Datei auslesen und die Daten weiter verarbeiten Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben