SQLite bytes[] to Object

  • Um was für ein Objekt handelt es sich denn genau? Ganz so einfach funktioniert das leider nicht direkt: Du musst dafür irgendeine Form von Serialisierung bzw. Deserialisierung durchführen. Ein paar Objekte (zB String) kannst du direkt zu einem byte[] umwandeln und wieder zurück, bei anderen Objekte hingegen musst du dich selber darum kümmern.


    Java bietet von Haus aus das Serializable Interface - wenn dein Objekt nur primitive Datentypen (oder andere Serializable Objekte) enthält, kann es damit selber die Serialisierung und Deserialisierung durchführen. Wenn dein Objekt also das Interface Serializable implementiert, kannst du es zB mit einem ObjectOutputStream und ObjectInputStream serialisieren und deserialisieren (mit writeObject() und readObject()):

    Java
    //Convert a byte array into an object via Serializable interface
    try(ObjectInputStream is = new ObjectInputStream(new ByteArrayInputStream(array))){
    MySerializableObject obj = (MySerializableObject) is.readObject();
    }


    Alternativ kannst du deine eigene Serialisierung durchführen, zB mithilfe eines ByteBuffer. Die Variante ist zwar nicht ganz so bequem, allerdings wesentlich performanter und in kritischen Situationen daher zu bevorzugen. Beispiel:



    In manchen Fällen i.V.m. Datenbanken ist es sonst aber auch manchmal eine gute Option, wenn die einzelnen Felder auch als einzelne Daten gespeichert werden. Das bietet sich nicht immer an, aber bei Dingen wie Positionen oder Rotationen kann man das durchaus machen. D.h. die Datenbank hätte nicht eine einzelne Spalte "position", sondern drei Spalten "x", "y" und "z" (wo direkt die 3 Floats eines Vectors gespeichert werden). Performancemäßig am schnellsten.

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!