Die Java-Serialisierung von String [] - Array zur Speicherung in einer MySQL-Datenbank?
Ja, ich weiß, es ist schlechte Praxis und sollte ich stattdessen meine Tabellen normalisieren. Das beiseite, ist es möglich, die Serialisierung eines String [] - array und speichern es in der Datenbank?
Bin ich von der milde und nachsichtig Welt von PHP, wo der Aufruf der serialize () - Funktion und konvertieren Sie das array in einen string.
Gibt es ein äquivalent zu tun, solche Häresie in Java?
Abgesehen davon Normalisierung, gibt es elegantere Wege, der Speicherung von String Arrays in der Datenbank?
In Fall ist es zutreffend, ich verwende den jdbc-Treiber für meine MySQL-verbindungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja. Sie können serialisieren beliebiger Java-Objekte und speichern der serialisierten Daten in MySQL.
Wenn Sie die regelmäßige Serialisierung (ObjectOutputStream), die Ausgabe erfolgt immer Binär. Auch String-Serialisierung in Binärdaten. So haben Sie die Base64-Kodierung der stream, oder verwenden Sie eine binäre Spalte wie BLOB.
Diese unterscheidet sich von PHP, deren serialize() wandelt alles in text.
Können Sie auch die XML-Serialisierung in Java (XMLEncoder), aber es ist sehr ausführlich.
Wenn Sie jetzt denken, in Bezug auf die raw-arrays, du bist immer noch schreiben, PHP in Java.
Java ist eine Objekt-orientierte Sprache. Ein array von Strings ist wirklich nicht viel von eine Abstraktion.
Bekommst du ganz gute Tipps hier erzählen Sie, dass es möglich ist, zu serialisieren, das ein array von Zeichenketten in einen BLOB, die Sie können leicht speichern in MySQL, und Sie können sich sagen, dass Nachsicht ist eine Tugend.
Aber ich werde gehen, um Sie daran zu erinnern, dass Sie etwas zu verlieren, indem Sie denken nicht in Begriffen von "Objekten". Sie sind wirklich über Abstraktion und Kapselung und der Umgang mit Dingen auf einem höheren Niveau als bare-metal-ints, Strings und arrays.
Es wäre eine gute übung, um zu versuchen und gestalten Sie ein Objekt, das vielleicht Kapseln, ein array oder eine weitere, anspruchsvolle Daten-Struktur der child-Objekte, die mehr waren als Strings. Es wäre ein 1:m-Beziehung zwischen Eltern und Kind, die würde besser zu reflektieren, das problem wirklich zu lösen versucht. Das wäre weit mehr Objekt-orientiertes design als den, den Sie hier vorgeschlagen.
Gibt es verschiedene gute Serialisierung/Deserialisierung Bibliotheken, die automatisch konvertieren JavaBean-Objekte, die zu/von XML-und JSON-strings. Ich habe gute Erfahrungen mit ist XStream.
Java-built-in Unterstützung für die Serialisierung kann das gleiche tun, und schreiben Sie benutzerdefinierte Serialisierung/Deserialisierung Methoden für Java zu nennen.
Können Sie Rollen Sie Ihre eigenen Serialisierungs-Methoden zu, z.B. die Konvertierung in und aus einer durch Kommas getrennten Wert (CSV) - format.
Ich entscheide mich für eine Bibliothek, wie XStream ersten, vorausgesetzt, es gibt einen sehr überzeugenden Grund, nicht um die Daten zu normieren.
Wollen Sie nicht zu serialisieren des Arrays. Ich bin mir nicht sicher, warum Sie würde Serialisierung in PHP entweder, weil implode() und explode() wäre passender. Sollten Sie wirklich normalisieren Sie Ihre Daten, aber abgesehen davon, könnte man sehr einfach Google eine Lösung für die Umwandlung eines Arrays zu einem string.
Aber sicherlich die mehr logische, was zu tun wäre, um zu sparen Sie jede Zeichenfolge als Ihre eigenen Rekord mit einer geeigneten Kennung. Das wäre wahrscheinlich weniger Codierung als serialisieren -- eine einfache Schleife über die Elemente des Arrays, und würde in einer sauberen Datenbank-design, anstatt eine klebrige Sauerei.
Wenn Sie wirklich nicht wollen, zu normalisieren sich diese Werte in einer separaten Tabelle, wo jede saite würde in eine eigene Zeile, dann nur konvertieren Sie Ihre array in eine Liste von durch Komma getrennten Werten (eventuell austretende Kommas irgendwie). Vielleicht zitieren Sie jede saite, so dass "str1","str2".
Google für CSV-RFC für die spec auf, wie diese maskiert werden.